- 03-5820-1777平日10:00〜18:00
- お問い合わせ
今回はComposition Apiで画面作成(画面作成)の続きです。
前回はアプリケーション概要、画面作成部分の説明をしました。今回はサーバ部分を簡単に書いていこうと思います。実際のコードは此方にアップしてあります。
SpringBootで作成しています。
DBは使用せずに画面側の応答を受け取って簡単に処理するだけの簡易アプリケーションです。
機能一覧
機能 | 説明 |
---|---|
商品保管 | 商品情報をメモリ上に管理 |
商品取得 | 画面からのリクエストを受けて管理している商品一覧情報を返します |
商品取得(ID指定) | 画面からのリクエストを受けて管理している商品の中でIDが一致する商品情報を返します |
商品登録・更新 | 画面から商品情報を受取り、登録又は更新を行います |
・Goods.java
商品情報クラス
package com.example.compositionapi.service;
/**
* 商品情報クラス
*/
public class Goods{
private String code;
private String name;
private String category;
private String price;
public Goods(){
}
public Goods( String code, String name, String category, String price){
this.code = code;
this.name = name;
this.category = category;
this.price = price;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
}
・GoodsService.java
商品の管理、取得、追加、更新を行うクラス
package com.example.compositionapi.service;
import java.util.*;
import org.springframework.context.annotation.Scope;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Service;
import javax.annotation.*;
/**
* 商品の取得、追加を行うサービス
* シングルトンのサービス
**/
@Scope("singleton")
@Service
public class GoodsService {
private List<Goods> goodsList = new ArrayList<Goods>();
private int codeCount;
public GoodsService(){
//初期データとして5件用意
Goods goods1 = new Goods("001", "データモデリング", "001", "2000");
Goods goods2 = new Goods("002", "プロジェクトマネージャ", "001", "3000");
Goods goods3 = new Goods("003", "多変量分析", "001", "2000");
Goods goods4 = new Goods("004", "Javascript入門", "001", "2500");
Goods goods5 = new Goods("005", "エルデンリング", "002", "7000");
goodsList.add( goods1 );
goodsList.add( goods2 );
goodsList.add( goods3 );
goodsList.add( goods4 );
goodsList.add( goods5 );
codeCount = 5;
}
/**
* 商品情報を取得するメソッド
**/
public Goods[] getGoods(){
return goodsList.toArray( new Goods[]{} );
}
/**
* 該当するIDの商品情報取得
**/
public Goods getGoodsById( String id ){
return goodsList.stream().filter(goods -> goods.getCode().equals( id ) ).toArray( Goods[]::new)[0];
}
/**
* 商品情報を登録するメソッド
**/
public void registGoods( Goods regGoods ){
if( regGoods.getCode() != null && regGoods.getCode().length() != 0) {
Goods[] goodsArr = goodsList.stream().filter(goods -> goods.getCode().equals( regGoods.getCode() ) ).toArray( Goods[]::new);
if( goodsArr.length != 0 ){
goodsArr[0].setName( regGoods.getName() );
goodsArr[0].setCategory( regGoods.getCategory() );
goodsArr[0].setPrice( regGoods.getPrice() );
}
}else{
codeCount++;
String code = String.format("%03d", codeCount);
regGoods.setCode( code );
goodsList.add( regGoods );
}
}
}
・GoodsController.java
画面からのリクエストを受け処理するRestコントローラークラス
package com.example.compositionapi.ac;
import java.lang.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import com.example.compositionapi.service.GoodsService;
import com.example.compositionapi.service.Goods;
@RestController
@RequestMapping("/goods")
@CrossOrigin
public class GoodsController {
@Autowired
private GoodsService goodsService; //GoodsServiceをDI
/**
* 商品情報リストを取得
* @return
*/
@RequestMapping(value = "/list", method = RequestMethod.GET)
public Goods[] getGoodsList() {
return goodsService.getGoods();
}
/**
* 商品情報をIDを指定して取得
* @return
*/
@RequestMapping(value = "/byId", method = RequestMethod.GET)
public Goods getGoodsById( String id ){
return goodsService.getGoodsById( id );
}
/**
* 商品情報登録
* @return 結果
*/
@RequestMapping(value = "/regist", method = RequestMethod.POST)
public String regist( @RequestBody Goods goods ){
System.out.println( goods.getCode() );
System.out.println( goods.getName() );
System.out.println( goods.getCategory() );
System.out.println( goods.getPrice() );
goodsService.registGoods( goods );
return "Success";
}
}