Home - comento-backend-camp/ticket-reservation-server-hyejung GitHub Wiki
์๋ ๋ฌธ์๋ notion์ ์์ฑํ API ์ค๊ณ๋ฅผ ๋ณต์ฌํ ๋ด์ฉ์ ๋๋ค.
body๋ก ๋ฐ์ ์ด๋ฉ์ผ์ ์ฌ์ฉ์ ์ ๋ณด์ ๋ฑ๋กํ๋ค.
๋ฑ๋ก๋ ์ด๋ฉ์ผ ์ ๋ณด๋ ๊ณต์ฐ ์ข์ ์์ฝ ์ ์ฌ์ฉ๋๋ค.
201 : ์ด๋ฉ์ผ ๋ฑ๋ก ์ฑ๊ณต์, ๋ฑ๋ก์ ์ฑ๊ณตํ๋ค๋ ๋ฉ์ธ์ง๋ฅผ ์ ๋ฌํ๋ค.
400 : String type์ด ์๋ parameter๋ฅผ ์์ฒญ์ผ๋ก ๋ฐ์ ๊ฒฝ์ฐ 400 ์๋ฌ(์๋ชป๋ ์์ฒญ)๋ฅผ ์ ๋ฌํ๋ค.
500 : DB ๋ฌธ์ , ์๋ฒ ์ฐ๊ฒฐ ๋ฌธ์ ๋ฐ์ ์ 500 ์๋ฌ๋ฅผ ์ ๋ฌํ๋ค.
parameter๋ก ๋ฐ์ ๋ ์ง ๊ธฐ์ค ์ดํ์ ๊ณต์ฐ ์ ๋ณด๋ฅผ ๋ ์ง ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ์ฌ ์กฐํํ๋ค.
๊ณต์ฐ์ผ์ด ์ง๋ ๊ณต์ฐ์ ์กฐํํ ์ ์์ผ๋ฏ๋ก ์์ฝ๋ ๋ถ๊ฐํ๋ค.
๊ณต์ฐ์ '์ ๋ชฉ, ๊ณต์ฐ์ผ, ๊ฐ๊ฒฉ, ์์ธ์ ๋ณด'๋ก ์ด๋ฃจ์ด์ ธ์๋ค.
200 : ๊ณต์ฐ ์ ๋ณด ์กฐํ ์ฑ๊ณต ์, ๊ณต์ฐ ์ ๋ณด๋ฅผ ๋ด์๋์ ํ
์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ์ฌ Listํํ๋ก ์ ๋ฌํ๋ค.
400 : ์ค๋(2021-09-04) ์ด์ ์ ๋ ์ง์ ๊ฒฝ์ฐ, 400 ์๋ฌ(์๋ชป๋ ์์ฒญ)์ ์ ๋ฌํ๋ค.
404 : ๊ณต์ฐ ์ ๋ณด ์กฐํ ๊ฒฐ๊ณผ๊ฐ ์์ ๊ฒฝ์ฐ, 404 ์๋ฌ(์์ฒญ ์ ๋ณด ์์)์ ์ ๋ฌํ๋ค.
500 : DB ๋ฌธ์ , ์๋ฒ ์ฐ๊ฒฐ ๋ฌธ์ ๋ฐ์ ์ 500 ์๋ฌ๋ฅผ ์ ๋ฌํ๋ค.
parameter๋ก ๋ฐ์ ๋ ์ง์ ๊ณต์ฐ์ด๋ฆ์ ์ด์ฉํ์ฌ ํด๋น ๊ณต์ฐ์ ์ ํ ๊ฐ๋ฅํ ์ข์ ์ ๋ณด๋ฅผ ๋ ์ง ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์กฐํํ๋ค.
๋ฑ๋ก๋ ์ด๋ฉ์ผ ์ ๋ณด๋ ๊ณต์ฐ ์ข์ ์์ฝ ์ ์ฌ์ฉ๋๋ค.
200 : ์์ฒญ์ ๋ํ ์ผ์นํ๋ ์ ๋ณด ์กฐํ ์ฑ๊ณต ์, ์กฐํ ์ฑ๊ณต ๋ฉ์ธ์ง์ ํจ๊ป ์ข์ ์ฌ๋ถ๋ฅผ ์ ๋ฌํ๋ค.
400 : parameter 2๊ฐ ์ค 1๊ฐ๋ผ๋ String type์ด ์๋ ํ์
์ ์์ฒญ์ผ๋ก ๋ฐ์ ๊ฒฝ์ฐ 400 ์๋ฌ(์๋ชป๋ ์์ฒญ)๋ฅผ ์ ๋ฌํ๋ค.
404 : ์์ฒญ์ ๋ํ ์ผ์นํ๋ ์ ๋ณด ์กฐํ ์คํจ ์, ์กฐํ ์คํจ ๋ฉ์ธ์ง์ ํจ๊ป 404 ์๋ฌ๋ฅผ ์ ๋ฌํ๋ค.
500 : DB ๋ฌธ์ , ์๋ฒ ์ฐ๊ฒฐ ๋ฌธ์ ๋ฐ์ ์ 500 ์๋ฌ๋ฅผ ์ ๋ฌํ๋ค.
body๋ก ๋ฐ์ ๋ ์ง์ ๊ณต์ฐ์ด๋ฆ, ์ด๋ฉ์ผ ์ ๋ณด๋ฅผ ์ด์ฉํ์ฌ ํด๋น ๊ณต์ฐ์ ์ข์์ ์์ฝํ๋ค.
201 : ์์ฒญ์ ๋ํ ๊ณต์ฐ ์ ๋ณด ์ข์์ DB์ ์ถ๊ฐํ๊ณ , ์ฑ๊ณต ๋ฉ์ธ์ง์ ํจ๊ป ์์ฝํ ์ข์ ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ค.
400 : ๋ ์ง์ ๊ณต์ฐ์ด๋ฆ์ด 1๊ฐ๋ผ๋ null์ด๊ฑฐ๋ String type์ด ์๋ ํ์
์ ์์ฒญ์ผ๋ก ๋ฐ์ ๊ฒฝ์ฐ 400 ์๋ฌ(์๋ชป๋ ์์ฒญ)๋ฅผ ์ ๋ฌํ๋ค.
401 : ์ฌ์ฉ์ ์ด๋ฉ์ผ ์ ๋ณด๊ฐ DB์ ์๋ ๊ฒฝ์ฐ, 401 ์๋ฌ(์ธ์ฆ ๊ถํ ์์)๋ฅผ ๋ฐํํ๋ค.
409 : ์์ฒญ์ ๋ํ ๊ณต์ฐ ์ข์์ ์์ฝํ ์ ์๋ ๊ฒฝ์ฐ(์์ฝ์ด ๋), ์คํจ ๋ฉ์ธ์ง์ ํจ๊ป 409 ์๋ฌ๋ฅผ ์ ๋ฌํ๋ค.
500 : DB ๋ฌธ์ , ์๋ฒ ์ฐ๊ฒฐ ๋ฌธ์ ๋ฐ์ ์ 500 ์๋ฌ๋ฅผ ์ ๋ฌํ๋ค.
parameter๋ก ๋ฐ์ ์ด๋ฉ์ผ์ ์ด์ฉํ์ฌ ๋ณธ์ธ์ด ์์ฝํ ๊ณต์ฐ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค๋ค.
200 : ์์ฒญ์ ๋ํ ์ผ์นํ๋ ์ ๋ณด ์กฐํ ์ฑ๊ณต ์, ์กฐํ ์ฑ๊ณต ๋ฉ์ธ์ง์ ํจ๊ป ์์ฝ ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ค.
400 : parameter๊ฐ ์ด๋ฉ์ผ ํ์์ด ์๋๊ฑฐ๋ String type์ด ์๋ ํ์
์ ์์ฒญ์ผ๋ก ๋ฐ์ ๊ฒฝ์ฐ 400 ์๋ฌ(์๋ชป๋ ์์ฒญ)๋ฅผ ์ ๋ฌํ๋ค.
401 : ์ฌ์ฉ์ ์ด๋ฉ์ผ ์ ๋ณด๊ฐ DB์ ์๋ ๊ฒฝ์ฐ, 401 ์๋ฌ(์ธ์ฆ ๊ถํ ์์)๋ฅผ ๋ฐํํ๋ค.
404 : ์์ฒญ์ ๋ํ ์ผ์นํ๋ ์ ๋ณด ์กฐํ ์คํจ ์, ์กฐํ ์คํจ ๋ฉ์ธ์ง์ ํจ๊ป 404 ์๋ฌ๋ฅผ ์ ๋ฌํ๋ค.
500 : DB ๋ฌธ์ , ์๋ฒ ์ฐ๊ฒฐ ๋ฌธ์ ๋ฐ์ ์ 500 ์๋ฌ๋ฅผ ์ ๋ฌํ๋ค.
/*
* ApiController.java
*/
//์ด๋ฉ์ผ ๋ฑ๋ก
public ResponseEntity<T> addEmail(@RequestBody String email);
//๋ฐ์ ๋ ์ง ์ดํ์ ๊ณต์ฐ ์ ๋ณด๋ค ๋ณด์ฌ์ฃผ๊ธฐ
public ResponseEntity<T> showPerformanceInfo(@RequestParam(value = "date", required = true) Date date);
//๋ฐ์ ๋ ์ง์ ๊ณต์ฐ ์ด๋ฆ์ผ๋ก ํด๋น ๊ณต์ฐ ์ข์ ์ ๋ณด ๋ณด์ฌ์ฃผ๊ธฐ
public ResponseEntity<T> showPerformanceSeat(@RequestParam(value = "date", required = true) Date date, @RequestParam(value = "title", required = true) String title)
//๊ณต์ฐ ์ข์ ์์ฝํ๊ธฐ
public ResponseEntity<T> addBooking(@RequestBody BookingDto reqBooking)
//๊ณต์ฐ ์์ฝ ์ ๋ณด ํ์ธํ๊ธฐ
public ResponseEntity<T> showMyBooking(@PathVariable String email);
/*
* UserService.java
*/
public User saveUser(User user);
public Optional<User> verifyEmail(String email);
/*
* PerformanceService.java
*/
public List<Performance> getListByDate(Date date);
public List<Performance> getListByDateAndTitle(Date date, String title);
/*
* BookingService.java
*/
public Booking saveBookging(BookingDto reqBooking);
public Optional<Booking> getMyBooking(String email);
/*
* UserRepository.java
*/
Optional<User> findByEmail(String email);
User save(User user);
/*
* PerformanceRepository.java
*/
List<Performance> findByDateGraterThenOrderBydateAsc(Date date);
List<Performance> findByDateConstainsAndTitleOrderByDateAsc(Date date, String title);
List<Performance> findAll();
/*
* BookingRepository.java
*/
Optional<Booking> findByUser(User user);
Booking save(Booking booking);
/*
* Entity
*/
public class User{
private Long id;
private String email;
}
public class Performance{
private Long id;
private String title;
private Date date;
private Long price;
private String description;
}
public class Booking{
private Long id;
private User user;
private Performance performance;
}
/*
* Dto
*/
public class BookingDto{
private Date date;
private String title;
private String email;
}