인터페이스 4일차 (postman)
2023. 1. 6. 12:44ㆍ코딩배움일지/인터페이스 구현
auth
POST
POST api/auth/
http://localhost:4040/api/auth/
{
"email": "jiraynor",
"password": "qwer1234!!"
}
Example Request success
curl --location --request POST 'localhost:4040/api/auth/' \
--header 'Content-Type: application/json' \
--data-raw '{
"email": "jiraynor@gmail.com",
"password": "qwer1234!!"
}'
Example Response
{
"status": true,
"message": "login success",
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",
"expirationTime": 6000000
}
}
예시:
package com.jingu.board.dto.response;
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor(staticName="set")
public class ResponseDto<D> {
private boolean status;
private String message;
private D data;
public static <D> ResponseDto<D> setSuccess(String message, D data){
return ResponseDto.set(true, message, data);
}
public static <D> ResponseDto<D> setFailed(String message){
return ResponseDto.set(false, message, null);
}
}
main controller postmap 수정
// @PostMapping(end-point) : 해당 end-point로 Post 방식의 Request 가 왔을 때 동작
@PostMapping(HELLO)
// @RequestBody : 해당 Request의 Body 에서 JSON 을 인식해 인스트너스로 변경
public ResponseDto<HelloDto> postHello(@RequestBody HelloDto requestBody) {
return ResponseDto.setSuccess("hello", requestBody);
AuthController
package com.jingu.board.controller;
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.RestController;
import com.jingu.board.dto.auth.AuthPostDto;
import com.jingu.board.dto.auth.LoginDto;
import com.jingu.board.dto.response.ResponseDto;
@RestController
@RequestMapping("api/auth/")
public class AuthController {
@PostMapping("")
public ResponseDto<LoginDto> login(@RequestBody AuthPostDto requestBody){
LoginDto result = new LoginDto("JWT",3600000);
return ResponseDto.setSuccess("login success", result);
}
}
AuthPostDto
package com.jingu.board.dto.auth;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class AuthPostDto {
private String email;
private String password;
}
LoginDto
package com.jingu.board.dto.auth;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class LoginDto {
private String token;
private int expirationTime;
}
@Service
새로 만들기
컨트롤러에 하면 안됨
AuthService
package com.jingu.board.service;
import org.springframework.stereotype.Service;
import com.jingu.board.dto.auth.AuthPostDto;
import com.jingu.board.dto.auth.LoginDto;
import com.jingu.board.dto.response.ResponseDto;
@Service
public class AuthService {
public ResponseDto<LoginDto> login(AuthPostDto dto){
LoginDto result = new LoginDto("JWT",3600000);
return ResponseDto.setSuccess("", result);
}
}
'코딩배움일지 > 인터페이스 구현' 카테고리의 다른 글
인터페이스 5일차 (Service, Autowired, JPA, ORM) (0) | 2023.01.09 |
---|---|
유효성검사 (0) | 2023.01.09 |
인터페이스 3일차 (DTO) (0) | 2023.01.05 |
인터페이스 3일차 (Controller) (0) | 2023.01.05 |
인터페이스 2일차 ( Spring Framework & Dispatcher Servlet) (0) | 2023.01.04 |