편안하고 API를 구축하는 봄 부트를 사용하여

1. 봄 이니셜 프로젝트 아이디어 만들기

Create_Spring_Boot_Project

웹을 추가하고 롬복 대화 상자에서 프로젝트를 만들거나 프로젝트의 설립 후 pom.xml종속성을 추가하기 :

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

2. 주석이 편안하고 API를 구축

다음은 작업 대상으로 ArrayList의 아무 데이터베이스가 없습니다.

엔티티 클래스를 생성 객체 API 작업 등

package top.cloudli.demo.model;

import lombok.AllArgsConstructor;
import lombok.Data;

@Data
@AllArgsConstructor
public class Character {
    private int id;
    private String name;
    private String racial;
    private String[] ability;
}

롬복은 게터, 세터와 생성자를 쓸 필요가 없어, 여기에 사용, 적절한 주석이 자동으로 롬복 후 생성됩니다 추가 할 수 있습니다.

컨트롤러 만들기, 편안하고 API를 구현

@RestController등가 @Controller@ResponseBody주석, MIME 기본의 사용의 조합 application/json.

@GetMapping등가 @RequestMapping(method = {RequestMethod.GET})다른 의견에 유사한.

package top.cloudli.demo.controller;

import org.springframework.web.bind.annotation.*;
import top.cloudli.demo.model.Character;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * CRUD for Character
 */
@RestController
@RequestMapping(path = "/character")
public class CharacterController {

    private ArrayList<Character> characters = (ArrayList<Character>) Stream.of(
            new Character(1, "罗小黑", "妖精", new String[]{"空间系-传送", "空间系-领域"}),
            new Character(2, "罗小白", "人类", null)
    ).collect(Collectors.toList());

    /**
     * 获取所有 Character
     * @return All Characters
     */
    @GetMapping()
    public List<Character> getCharacters() {
        return characters;
    }

    /**
     * 根据 id 获取 Character
     * @param id Id of Character
     * @return Character
     */
    @GetMapping(path = "{id}")
    public Character getCharacter(@PathVariable int id) {
        return characters.stream()
                .filter(character -> character.getId() == id)
                .findAny()
                .orElse(null);
    }

    /**
     * 更新 Character
     * @param character Changed Character
     * @return Updated Character
     */
    @PutMapping()
    public Character alterCharacter(@RequestBody Character character) {
        AtomicBoolean found = new AtomicBoolean(false);

        characters.replaceAll(c -> {
            if (c.getId() == character.getId()) {
                found.set(true);
                return character;
            } else return c;
        });

        return found.get() ? character : null;
    }

    /**
     * 添加 Character
     * @param character New Character
     * @return Inserted Character
     */
    @PostMapping()
    public Character addCharacter(@RequestBody Character character) {
        return characters.add(character) ? character : null;
    }

    /**
     * 删除 Character
     * @param id Id of Character
     * @return Id of Character deleted
     */
    @DeleteMapping(path = "{id}")
    public int deleteCharacter(@PathVariable int id) {
        return characters.removeIf(character -> character.getId() == id) ? id : -1;
    }
}

3. API에 액세스 프로젝트를 실행

URL 방법 운영
/캐릭터 가져 오기 문자를 모두 가져 오기
/ 문자 / ID 가져 오기 문자 지정된 ID를 가져옵니다
/캐릭터 놓다 전송을 수정, 수정 객체 문자를 완료
/ 문자 / ID 지우다 지정된 ID를 문자 삭제

경우 ?id=xxx방식으로, 주석이 될 수 있습니다 path매개 변수를 제거합니다.

보내기 GET에 요청을 http://localhost:8080/character:

[
    {
        "id": 1,
        "name": "罗小黑",
        "racial": "妖精",
        "ability": [
            "空间系-传送",
            "空间系-领域"
        ]
    },
    {
        "id": 2,
        "name": "罗小白",
        "racial": "人类",
        "ability": null
    }
]

보내기 GET에 요청을 http://localhost:8080/character/1:

{
    "id": 1,
    "name": "罗小黑",
    "racial": "妖精",
    "ability": [
        "空间系-传送",
        "空间系-领域"
    ]
}

DELETE위의 요청으로 GET, 문자의 성공 후 지정된 ID가 삭제됩니다로서, ID의 반환을 삭제합니다.

전송 PUT요청은`하는 http://localhost:8080/character헤더에 추가 Content-Type:application/json, 수정 된 데이터 바디 부분은 완료 :

{
    "id": 1,
    "name": "小黑",
    "racial": "妖精",
    "ability": [
        "空间系-传送"
    ]
}

JSON 데이터를 상기와 성공적인 복귀 후.

POST이전 요청 PUT성공적인 리턴 데이터 이후에 제출한다.

추천

출처www.cnblogs.com/cloudfloating/p/11774749.html