728x90
반응형
지난 시간 AWS S3 버킷을 생성진행하였습니다.
이번시간에는 리뷰 작성 시, 사진과 별점과 내용을 보내는 방법을 구현해 보겠습니다.
57. [ JAVA ] AWS S3 버킷 생성 방법
AWS S3 란? AWS S3은 Amazon Simple Storage Service의 약자로, 객체 스토리지 서비스 중 하나입니다.데이터는 "버킷"이라는 리소스에 객체로 저장되며, 한 객체의 크기는 최대 5TB까지 가능하다고 합니다. 객
danmi1109.tistory.com
문제
3.1. 리뷰 작성
새로운 리뷰를 작성하는 API입니다.
- URL: /api/v1/reviews/restaurant/{restaurantId}/menu/{menuId}
- Method: POST
- 설명:
- 인증된 사용자만 리뷰를 작성할 수 있습니다.
- 동일한 메뉴에 대해 한 사용자는 하나의 리뷰만 작성 가능합니다.
- 리뷰 작성 시 해당 음식점의 평균 평점이 자동으로 갱신됩니다.
- 음식점과 메뉴의 리뷰 카운트가 자동으로 증가합니다.
- Request Header:
Authorization: Bearer {accessToken}
- Request Body: Form-Data
- rating (text) : 5
- content (text) : 이 음식 정말 맛있게 잘 먹었습니다~ 굿!
- image (file) : 사진파일
- Validation:
- rating: 1-5 사이의 정수만 가능
- content: 최소 10자 이상 작성
- restaurantId: 유효한 음식점 ID
- menuId: 해당 음식점의 유효한 메뉴 ID
- Response:
- 성공 201 문제있을경우 400
풀이
1. AWS 버킷생성
2. intelliJ 세팅
1. pom.xml 파일 추가
maven repository
<dependencyManagement>
<dependencies>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>bom</artifactId>
<version>2.25.60</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>s3</artifactId>
</dependency>
...
2. application.yml 파일 추가
application.yml 파일에 다음을 추가
AWS 에서 생성한 버킷 이름을 application.yml 파일에 동일하게 추가해줍니다.
spring:
profiles:
active: dev
cloud:
aws:
credentials:
access-key: key
secret-key: key
s3:
bucket: block-posting
region: ap-northeast-2
//base-url: <https://block-posting.s3.ap-northeast-2.amazonaws.com>
3. S3Config 클래스 생성
config 패키지 - S3Config 클래스 생성
@Configuration
public class S3Config {
@Value("${cloud.aws.credentials.access-key}")
private String accessKey;
@Value("${cloud.aws.credentials.secret-key}")
private String secretKey;
@Value("${cloud.aws.s3.region}")
private String region;
@Bean
public S3Client amazonS3Client() {
AwsBasicCredentials awsCreds = AwsBasicCredentials.create(accessKey, secretKey);
return S3Client.builder()
.region(Region.of(region))
.credentialsProvider(StaticCredentialsProvider.create(awsCreds))
.build();
}
}
4. UniqueFileNameGenerator 클래스 생성
util 패키지 - UniqueFileNameGenerator 생성
public class UniqueFileNameGenerator {
public static String generateUniqueFileName(long userId, String extension) {
LocalDateTime now = LocalDateTime.now();
String timestamp = now.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
return userId + "_" + timestamp + "_" + System.nanoTime() + extension;
}
}
3.1. 리뷰 작성
새로운 리뷰를 작성하는 API입니다.
- URL: /api/v1/reviews/restaurant/{restaurantId}/menu/{menuId}
- Method: POST
- 설명:
- 인증된 사용자만 리뷰를 작성할 수 있습니다.
- 동일한 메뉴에 대해 한 사용자는 하나의 리뷰만 작성 가능합니다.
- 리뷰 작성 시 해당 음식점의 평균 평점이 자동으로 갱신됩니다.
- 음식점과 메뉴의 리뷰 카운트가 자동으로 증가합니다.
Postman
위와같이 사진이 업로드 된것을 확인할수 있습니다.
728x90
반응형
'API > 실습' 카테고리의 다른 글
69. [ JAVA ] 공공데이터 포털 API 이용 : 영화 박스오피스순위 예시 (0) | 2025.01.13 |
---|---|
63. [ JAVA ] Spring Boot를 이용한 API 통신 : 유튜브 검색 예시 (1) | 2025.01.12 |
55. [ JAVA ] API 문서 문제 : JWT(Json Web Token)(보안) / Admin(2) (1) | 2025.01.11 |
53. [ JAVA ] Spring Boot를 이용한 API 통신 : 뉴스 검색 예시 (1) | 2025.01.11 |
48. [ JAVA ] API 문서 문제 : JWT(Json Web Token)(보안) / Admin(1) (0) | 2025.01.06 |