Coder Social home page Coder Social logo

mannalga-api's People

Contributors

goodray0379 avatar kakao-eric-cc avatar pompitzz avatar sightstudio avatar yyy9942 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

mannalga-api's Issues

이미지 저장소 구축

모임 메인 사진, 사진첩 등을 위해 이미지 저장소 구축이 필요할 것 같아요.
S3 프리티어 제공하니깐 이용하셔도 될 거 같습니다.

파일 저장소 구축

AWS S3를 쓰거나, 다른 파일 스토리지를 알아보자. 이미지 저장, 파일 저장 등등

각종 권한 지정

image

권한

  1. 모임원 관리
    1.1 모임원 초대
    1.2 모임원 추방
    1.3 최대 모임원 인원 조정

  2. 게시판 권한
    2.1 읽기 권한
    2.2 쓰기 권한
    2.3 삭제 권한

  3. 사진 게시판 권한
    3.1 읽기 권한
    3.2 쓰기 권한
    3.3 삭제 권한

  4. 모임 권한
    4.1 모임 개설 권한
    4.2 조회 권한
    4.3 개설된 모임 수정 권한
    4.4 개설된 모임 삭제 권한

[모임 상세 화면] 요청, 응답 데이터 정의

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" // 이 부분이 수정되어야 할거 같아요.

프로젝트 추가 설정

자잘한게 많아서 한번에 모아서 처리합니다.

  • docker-compose nginx 추가
    /api 밑으로 들어오는 요청을 서버로 프록시

  • Rest Docs 추가

  • 코드 리팩토링

공통 리스폰스 포맷 정하기

모든 반환값에 적용할 공통 리스폰스 포맷을 정한다.

{
  "data": {},
  "paging":{
    "offset": 2,
    "size": 2,
    "searchOptions": {
        "stateList": [],
        "interestList": []
    }
  }
  "requestUrl": "taskforce/clubs/search"
}

data에는 실제 요청에 대한 응답 값을 반환합니다.
더 추가할것이 있을까요?

Rest docs TOC

image
Rest docs TOC에서 빨간 박스 부분 제거 가능하면 부탁드려요.

[모임 리스트] 요청, 응답 데이터 정의

Request

{
  "사이즈": 10,
  "페이지": 1,
  "검색조건": { // nullable
      "지역Seq": "", // 상위 그룹도 가능
      "관심사Seq": ""
      "정렬": "" // 최신순 or 인기순 등등..
    }
}

Response

{
    "모임리스트": [
        {
          "seq": "",
          "모임명": "모임명",
          "모임대표사진": "",
          "현원": 5,
          "총원": 10,
          "모임관심사": "",
          "활동지역": ""
        }
    ],
    "페이징정보": {} // 스프링 Page<T> 그대로 주시면 될 거 같아요.
}
  • 변수명은 편하게 정하실 수 있도록 한글로 적었어요.
  • 데이터 정해지면 영문 변수명으로 작성해서 공유 부탁드려요.

모임 검색 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)

https://github.com/HomoEfficio/dev-tips/blob/master/%EC%9C%88%EB%8F%84%EC%9A%B0%EC%97%90%EC%84%9C%20Gradle%20%EC%82%AC%EC%9A%A9%20%EC%8B%9C%20MS949%20%EC%9D%B8%EC%BD%94%EB%94%A9%20%EC%97%90%EB%9F%AC%20%EC%B2%98%EB%A6%AC.md

윈도우로 빌드하면 인코딩 문제때문에 안되는듯하다. 위 링크대로 해결하면 된다.

image
여기서 모든 인코딩을 UTF-8로 바꿔주자

이것도 안되면 인텔리제이 메뉴중 help - Edit Custom Vm Option에서 아래 내용을 추가한다
-Dfile.encoding=UTF-8

State 조회 오류, isFirst 프로퍼티 이름 변경 요청

  1. States 조회 시 500에러 확인 부탁드려요.

  2. 저번 주에 말했던 isFirst flag를 회원 가입 여부로 변경한 작업 하신 코드 살짝 봤는데 응답 프로퍼티 이름은 그대로 isFirst로 반환 해주시더라고요.
    죄송하지만 가능하다면 내부 로직에서 사용하시는거 처럼 isFirst -> isRegistered로 변경 부탁드려요.
    더 명시적이고 이미 프론트에도 그렇게 작업해놨어요. ㅠㅠ

Spring Rest docs 적용

Spring Rest Docs를 적용하였습니다. (더러운 Kotlin DSL ㅂㄷㅂㄷ..)

Spring rest docs를 적용하려면

  1. 다음과 같이 ApiDocumentationTest 오브젝트를 상속받아서 테스트 코드를 작성합니다.

image

ApiDocumentationTest 내부
image

각 테스트마다 bean을 생성/소멸 시키면 테스트 코드가 커질수록 빌드, api 생성시간이 느려지기 때문에
한번에 bean을 만들어 사용해야합니다. 해당 네모친 부분에 테스트 코드를 적용할 컨트롤러 클래스를 넣어주면 됩니다.

image

이후 src/doc에 있는 index.adoc에 기술해주면 됩니다.

개발 서버 생성

AWS 인스턴스 생성

  • 방화벽 설정
  • ssh 연동 설정
  • DB 설치
  • Redis 설치
  • 각종 설정

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.