mannalga-api's People
Forkers
qqq-tech metacloud sightstudio koogk7 jeongjaeeom choiasher lemphis hyunsung-na dongyeon94 eunbeelee jinyoungchoi95 changhwank frantik inkuksussmannalga-api's Issues
모임 검색시 HTTP Method GET => POST로 변경 (Axios에서 GET Body 지원 안함)
모임 검색, 조회 기능
**모임 조회(모임 리스트, 검색기능) 제작**
개인컴 램 용량 문제로 인한 빌드 실패 문제, 램 구입 후 빌드 진행 후 rest docs 적용
[모임 사진첩] 사진 등록/조회 구현
모임의 사진첩에 사진을 등록/조회하는 기능을 구현합니다.
이미지 저장소 구축
모임 메인 사진, 사진첩 등을 위해 이미지 저장소 구축이 필요할 것 같아요.
S3 프리티어 제공하니깐 이용하셔도 될 거 같습니다.
관심사 조회 및 추가 기능 제작
시 - 시군구 데이터 생성
파일 저장소 구축
AWS S3를 쓰거나, 다른 파일 스토리지를 알아보자. 이미지 저장, 파일 저장 등등
지역 조회 및 내 지역 선택 기능 개발
모임 매니저 권한 부여/회수 기능 구현
각종 권한 지정
[모임 상세 화면] 요청, 응답 데이터 정의
Request
- URI PathVariable로 전송
Response
{
"모임정보": {
"seq": "",
"모임명": "모임명",
"모임상세설명": "",
"현원": 5,
"총원": 10,
"모임관심사": "",
"활동지역": "",
"모임대표사진": ""
},
"유저정보": {
"ROLE": "모임장 OR 매니저 OR 회원 OR 비회원",
"모임좋아요눌렀는지?": true
},
"게시판리스트(첫페이지)": {
"게시판리스트": [
{
"seq": "",
"작성자이름": "",
"작성자이미지": "",
"좋아요수": "",
"댓글수": "",
"작성일": "",
"제목": "",
"모임장게시글인지?": false,
"매니저게시글인지?": false,
"내게시글인지?": true
}
],
"페이징정보": {} // 스프링 Page<T> 그대로 주시면 될 거 같아요,
},
"사진첩(첫페이지)": {
"사진첩리스트": [
{
"seq": "",
"이미지": "",
"작성자이름": "",
"작성자이미지": "",
"좋아요수": "",
"작성일": "",
"모임장게시글인지?": false,
"매니저게시글인지?": false,
"내게시글인지?": true
}
],
"페이징정보": {} // 스프링 Page<T> 그대로 주시면 될 거 같아요.
},
"일정(최신순으로)": [
{
"seq": "",
"장소": "",
"날짜": "",
"제목": "",
"메모(비용,준비물등)": "",
"참석가능인원": "",
"참석신청인원": "",
"내가참석신청했는지?": ""
}
],
"멤버리스트": {}, // 필요한지 이슈에서 얘기
"공지사항(최근 2~3개)": [] // 게시판과 동일,
}
- 변수명은 편하게 정하실 수 있도록 한글로 적었어요.
- 데이터 정해지면 영문 변수명으로 작성해서 공유 부탁드려요.
- 데이터가 많아서 몇 주 동안 진행될 거 같은데 개발은 위에서부터 아래로 진행 부탁드려요.
이미지 임시 저장 응답 url 수정 요청
{
"absolutePath": "https://super-invention-static.s3.ap-northeast-2.amazonaws.com/super-invention-static/temp/img/20200920124207-6a441c10-322e-45da-953b-bc3dd9f9c49f-book.jpeg",
}
@SightStudio 이미지 임시 저장시 요청 응답 중 absolutePath에서 buketName(super-invention-static)이 중간에 붙어 있는데 이 부분이 제거되어야 정상적으로 url으로 이미지 접근이 가능합니다. 수정부탁드려요.
val absolutePath = "$endpointUrl/$bucketName/$filePath" // 이 부분이 수정되어야 할거 같아요.
[모임 일정] 조회/등록 구현
모임의 일정 등록하고 조회하는 API를 개발합니다.
프로젝트 추가 설정
자잘한게 많아서 한번에 모아서 처리합니다.
-
docker-compose nginx 추가
/api 밑으로 들어오는 요청을 서버로 프록시 -
Rest Docs 추가
-
코드 리팩토링
공통 리스폰스 포맷 정하기
모든 반환값에 적용할 공통 리스폰스 포맷을 정한다.
{
"data": {},
"paging":{
"offset": 2,
"size": 2,
"searchOptions": {
"stateList": [],
"interestList": []
}
}
"requestUrl": "taskforce/clubs/search"
}
data에는 실제 요청에 대한 응답 값을 반환합니다.
더 추가할것이 있을까요?
프로젝트 기본 구조 생성
- 프로젝트 생성
- gitignore 생성
- 패키지 구조 설정
- 의존성 설정
팀원 모집
프로젝트를 함께 진행할 팀원을 모집한다. 프론트엔드 개발자 2명을 목표로!
모집공고
https://docs.google.com/document/d/1byhnlar0n63jR3gyjtEQ70WJ31IATMkxnwXdztx8sgo/edit?usp=sharing
모집 공고를 올릴 대상
- 생활코딩
- 유쾌한 스프링
- 스프링 이즈 커밍
내 지역 조회 및 수정
- 내 지역 조회
- 내 지역 수정 (추가 및 삭제)
Rest docs TOC
모임 더미데이터 추가
모임 검색을 테스트하기 위한 데이터를 DB에 입력해둔다
[모임 리스트] 요청, 응답 데이터 정의
Request
{
"사이즈": 10,
"페이지": 1,
"검색조건": { // nullable
"지역Seq": "", // 상위 그룹도 가능
"관심사Seq": ""
"정렬": "" // 최신순 or 인기순 등등..
}
}
Response
{
"모임리스트": [
{
"seq": "",
"모임명": "모임명",
"모임대표사진": "",
"현원": 5,
"총원": 10,
"모임관심사": "",
"활동지역": ""
}
],
"페이징정보": {} // 스프링 Page<T> 그대로 주시면 될 거 같아요.
}
- 변수명은 편하게 정하실 수 있도록 한글로 적었어요.
- 데이터 정해지면 영문 변수명으로 작성해서 공유 부탁드려요.
모임 생성시 지역, 관심사를 입력받을 수 있도록 변경
카카오 유저 프로필 조회기능 개발
UserService Test Fail 해결
모임 검색 request 변수명 변경 요청
{
"offset" : 0,
"size" : 10,
"searchOptions" : {
"stateList" : [ {
"seq" : 102,
"priority" : 1
} ],
"interestList" : [ {
"seq" : 4,
"priority" : 1
}, {
"seq" : 20,
"priority" : 2
} ]
}
}
@yyy9942 모임 검색시 요청하는 바디에서 offset이 page로 취급되고 있어요.
실제로 offset:10으로 요청하면 응답 pageable에는 pageNumber:10, offset: 100이 되네요.
현재 로직을 유지하실 꺼면 요청 body 변수명을 offset -> page로 변경해주세요~
모임 리스트 조회나 검색 시 페이징 제공 등 디테일 부분 개발
gradle build시 빌드가 되지 않을 때. (MS949 ERROR)
윈도우로 빌드하면 인코딩 문제때문에 안되는듯하다. 위 링크대로 해결하면 된다.
이것도 안되면 인텔리제이 메뉴중 help - Edit Custom Vm Option에서 아래 내용을 추가한다
-Dfile.encoding=UTF-8
모임 가입 기능 구현
깃헙액션 머지시 CICD -> 버튼클릭으로 CICD
test
go
유저가 회원가입을 했는지 판별하는 속성 추가
CI/CD 구성 완성
빌드가 현재 진행 안댐
test chang
chang body
모임 검색시 모임 관심사 리스트, 모임 지역 리스트를 우선순위별로 정렬
모임 관심사 추가/삭제 기능 개발
카카오 유저 프로필 조회시 프로필사진이 없을 때 에러 발생
바바오 유저를 조회할 때 프로필사진이 nul일 경우, 해당 변수에 null을 비허용하고있어서 에러가 발생하고 있음
[로그인] 카카오 access_token 만료시 갱신 문제
acces_token 만료시 kakao oauth 서버에서 401 에러를 발생시켜 이를 refresh 토큰으로 갱신 필요
모임 개설 기능 추가
모임 만들기 API 개발
Database ERD 설계
MySQL을 사용하는 RDBMS형 ERD 설계
aquery tool
link : https://aquerytool.com/
invite code : e77026ac-3d59-1766-78cd-67e2b5bf6be5
읽기 전용 URL
URL : https://aquerytool.com:443/aquerymain/index/?rurl=ff215277-a260-4f7e-a559-0b84f8683d82
Password : 457ixm
참여방법
[모임 게시판] 등록/조회/삭제/수정 구현
State 조회 오류, isFirst 프로퍼티 이름 변경 요청
-
States 조회 시 500에러 확인 부탁드려요.
-
저번 주에 말했던 isFirst flag를 회원 가입 여부로 변경한 작업 하신 코드 살짝 봤는데 응답 프로퍼티 이름은 그대로 isFirst로 반환 해주시더라고요.
죄송하지만 가능하다면 내부 로직에서 사용하시는거 처럼 isFirst -> isRegistered로 변경 부탁드려요.
더 명시적이고 이미 프론트에도 그렇게 작업해놨어요. ㅠㅠ
Spring Rest docs 적용
Spring Rest Docs를 적용하였습니다. (더러운 Kotlin DSL ㅂㄷㅂㄷ..)
Spring rest docs를 적용하려면
- 다음과 같이 ApiDocumentationTest 오브젝트를 상속받아서 테스트 코드를 작성합니다.
각 테스트마다 bean을 생성/소멸 시키면 테스트 코드가 커질수록 빌드, api 생성시간이 느려지기 때문에
한번에 bean을 만들어 사용해야합니다. 해당 네모친 부분에 테스트 코드를 적용할 컨트롤러 클래스를 넣어주면 됩니다.
이후 src/doc
에 있는 index.adoc에 기술해주면 됩니다.
모임 가입기능 개발
Github Action으로 CI, CD 구성
@SightStudio
@goodray0379
@yyy9942
8월 5일까지 Github Action에 대해 학습하고, 관련 액션을 적용하여 CI/CD를 구성해본다.
Entity 및 Repository 생성
테이블별 엔티티와 DAO를 생성
모임 지역 추가/삭제기능 구현
Swagger 세팅
_Swagger2 기본 세팅, UI를 통한 시각화
개발 서버 생성
AWS 인스턴스 생성
- 방화벽 설정
- ssh 연동 설정
- DB 설치
- Redis 설치
- 각종 설정
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.