目次
はじめに
前回、Spring BootでRest API(GET)を作成してDBからデータを取得してJSON形式で返却するAPIを作成しました。
今回は、リクエストされたデータをDB登録するRest API(POST)をSpring Bootで作成していきます。
今回やることを絵にするとこんな感じ
環境
- OS:OS X 10.11 El Capitan
- STS:3.8.4.RELEASE
前提
以下が完了している前提で説明します。

Rest API(POST)の作成
RestAPI(POST)は前回作成したソースコードに対して以下の変更を行います。
- サービス・クラス作成(ItemService.java)修正
- コントローラ(ItemController.java)修正
1.サービス・クラス作成(ItemService.java)修正
src/main/java/com/example/service/ItemService.javaに商品登録サービスを追加します。
package com.example.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.example.domain.Item;
import com.example.repository.ItemRepository;
@Service
@Transactional
public class ItemService {
@Autowired
ItemRepository itemRepository;
/**
* 商品一覧取得サービス
* @return List<item>
*/
public List<Item> findAll() {
return itemRepository.findAll();
}
/**
* 商品登録サービス
* @param item
* @return item
*/
public Item create(Item item) {
return itemRepository.save(item);
}
}
2.コントローラ(ItemController.java)修正
src/main/java/com/example/api/ItemRestController.javaにPOSTメソッドでリクエストされた際に動作するAPIを定義します。
package com.example.api;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
import com.example.domain.Item;
import com.example.service.ItemService;
@RestController
@RequestMapping("api/items")
public class ItemRestController {
@Autowired
ItemService itemService;
/**
* 商品一覧取得API
* @return List<item>
*/
@GetMapping
List<Item> getItems() {
List<Item> customers = itemService.findAll();
return customers;
}
/**
* 商品登録API
* @param item
* @return item
*/
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
Item postItem(@RequestBody Item item) {
return itemService.create(item);
}
}
Rest API(POST)の動作確認
パッケージ・エクスプローラーでsrc/main/java/com/example/RestApiApplication.javaを右クリック>実行>Spring Boot アプリケーションでAPサーバを起動します。
Google Chromeで「http://localhost:8080/api/items」にアクセスします。
ターミナルを開いて、curlコマンドでRestAPI(POST)経由で商品「もも」を登録します。
$ curl http://localhost:8080/api/items -i -XPOST -H "Content-Type: application/json" -d "{\"name\":\"もも\",\"price\":\"1000\",\"imgPath\":\"peach.jpg\"}"
HTTP/1.1 201
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Sat, 01 Jul 2017 23:26:19 GMT
{"id":5,"name":"もも","price":1000,"imgPath":"peach.jpg"}
商品が新規登録されていることが確認できました。
以上で、Spring BootによるRestAPI(POST)の作成は完了です。
おわりに
今回はSpring BootでRest API(POST)作成について解説しました。
前回Rest API(GET)を作成していたこともあって、
Rest APIの作成は非常に簡単だったと思います。
業務でAPIを作成する場合は、リクエストパラメータに秘密鍵を詰めて、メイン処理の前に認証処理を行うかと思いますが、、、今回はその辺は意識してません。。。