コラム

[Vue.js]Composition Apiで画面作成(サーバ作成)

今回は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";
	}
}

以上です。実際のコードはにアップしてあります。

この記事をシェアする
  • Facebookアイコン
  • Twitterアイコン
  • LINEアイコン

お問い合わせ ITに関するお悩み不安が少しでもありましたら、
ぜひお気軽にお問い合わせください

お客様のお悩みや不安、課題などを丁寧に、そして誠実にお伺いいたします。

お問い合わせはこちら
お電話でのお問い合わせ 03-5820-1777(平日10:00〜18:00)
よくあるご質問