Giter Site home page Giter Site logo

issue-tracker's Introduction

issue-tracker's People

Contributors

eeeesong avatar gleamingstar avatar godrm avatar jacksonpk avatar jiwon-jjw avatar moto6 avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

issue-tracker's Issues

[iOS] 이슈 탭 흐름 생성

  • 탭바 생성 & 아이콘 설정
  • 탭바 별 viewController 생성, 연결 (viewController 화면은 임시로 구성)

[iOS] apple 소셜로그인

  • Capability 추가하기

스크린샷 2021-06-09 오후 4 46 54

  • 로그인 정보 받아오기
  • 로그인 정보 저장하기 -> keyChain에 토큰 저장
  • 이미 로그인한 이력이 있다면 바로 이슈 창 띄우도록 구현
  • 에러 핸들링 -> 로그인 에러 타입 생성
  • 로그아웃
    • keychain 삭제
    • apple logout -> 아직 불가능함🙄
    • 인증 해제는 사용자 설정에서만 가능: userIdentifier까지 저장 후 그 정보를 활용해서 유저 삭제 여부 판단

[iOS] 이슈 메인화면작성

필수

  • 이슈 셀
    • 레이블 배열이 스크롤 뷰로 되야함X -> 셀 스와이프와 제스쳐가 겹침.
    • 고민중...
  • 이슈 테이블뷰 화면
  • 이슈 추가 버튼
  • 이슈 클릭시 이슈 상세화면

옵션

  • : 서치바 기능
  • : 선택 해서 PUT으로 상태 Close하게 하기. 동시에 reload Data 하면서 GET으로 open 된것만 보여주기.
  • : 필터

[iOS] 소셜로그인 합병작업

  • : Apple,Github 로그인 합병 (1차 머지)

  • : 중복 인터페이스 합병

  • : Native KeyChain 사용

  • : SceneDelegate에서 로그인 정보 확인

  • : TabBarViewControllerInfo에 필요한 정보추가(롤로와 협의해서 더 좋은 방안을 의논해보고 수정하기)

    탭바 Item의 계정Image를 제외하고는 모두 systemName으로 사용
    isAccountImage를 사용해 계정탭바에서는 avartarURL을 전달해줌
    Apple에서는 avartarURL이 존재하지 않으므로 대신 UIImage(systemName: "person.circle")으로 대체하기.
    

해당 코드

private struct TabBarViewControllerInfo {
        let title: String
        let image: UIImage?
        let isAccountImage: Bool
        let type: UIViewController.Type
        
        init(title: String, imageName: String, isAccountImage: Bool, type: UIViewController.Type) {
            self.title = title
            self.type = type
            self.isAccountImage = isAccountImage
            
            if self.isAccountImage {
                //Apple에서는 계정이미지가 없기때문에 "person.circle" 넣는다.
                guard let url = URL(string: imageName) else {
                    self.image = UIImage(systemName: "person.circle")
                    return
                }
                let imagedata = try? Data(contentsOf: url)
                self.image = UIImage(data: imagedata!)!.resizedImage(size: CGSize(width: 19.666, height: 19.0))
                
            }else {
                self.image = UIImage(systemName: "person.circle")
            }
        }
    }
  • jwt 만료 확인

[BE] API 설계

  1. Oauth 로그인 페이지

  2. Oauth User 정보

    • GET: http://3.34.122.67/api/login/web?code={$code}

    • GET: http://3.34.122.67/api/login/ios?code={$code}

    • Response Body

      {
        "jwt": "String",
        "avatarUrl": "String",
        "loginId": "String"
      }
    • 로그인 (Oauth) 애플 연동

    • -선택- 회원가입

    • -선택- 로그인 (일반)

  3. 라벨 http://3.34.122.67/api/labels

    • 전체보기 GET: http://3.34.122.67/api/labels
      Response Body

      {
      "data" :[
      	{
        "name":"String",
        "content":"String",
        "color_code":"String"
      	},
        {
        "name":"String",
        "content":"String",
        "color_code":"String"
      	}
      ]
      }
    • 라벨 추가 POST: http://3.34.122.67/api/labels
      Request Body

      {
        "name":"String",
        "content":"String",
        "color_code":"String"
      }
    • 삭제 DELETE: http://3.34.122.67/api/labels

    • 편집 PUT: http://3.34.122.67/api/labels/{$labelId}
      Request Body

      {
        "name":"String",
        "content":"String",
        "color_code":"String"
      }
  4. 마일스톤 http://3.34.122.67/api/milestones

    • 전체보기 GET: http://3.34.122.67/api/milestones

      {
      "data" :[
      	{
        "name":"String",
        "due_date":"String (yyyy-MM-dd hh:MM)",
        "description":"String"
      	},
        {
        "name":"String",
        "due_date":"String",
        "description":"String"
      	}
      ]
      }
    • 추가POST: http://3.34.122.67/api/milestones

    • 삭제DELETE: http://3.34.122.67/api/milestones

    • 편집PUT: http://3.34.122.67/api/milestones/{$milstoneId}

      {
        "name":"String",
        "due_date":"String (yyyy-MM-dd hh:MM)",
        "description":"String"
      }
  5. 이슈 < 핵심! http://3.34.122.67/api/issues

    • 전체보기 GET: http://3.34.122.67/api/issues
    • 필터보기 (책임자 / 라벨 / 마일스톤)
      • GET: /assigness
      • GET: /labels
      • GET: /milestone
    • 추가 POST:
    • 삭제 DELETE:
    • 편집 PUT:
    • 이슈 닫기 PUT: /status
    • 마일스톤 추가 PUT: /milestone
    • 라벨 추가 PUT: /labels
    • 담당자 추가 PUT: /assigness

[iOS] DispatchQueue

  • PR 피드백을 통해 리뷰어께서 제시한 Queue 관리 문제 논의

[FE/Luke] oauth

  • 사용자 정보 저장
  • 정보 렌더링
  • 로그인 구현

[FE/Seong] IssueDetail

IssueDetail

기획서

디자인 피그마

Feature list

구조

  • IssueDetail router page: /issuedetail
    • Header
      • Title
      • Description
      • EditButton
      • Close / OpenButton
      • AddButton
    • Content
      • SideBar common component
      • Comment
      • CommentModal (new/edit) - newissue 재활용 가능한가? 그냥 복붙이낫나?
      • DeleteButton - relative로 sidebar에다 걸면 되나?

기능

  • Header
    • 제목 편집
    • 이슈 닫기 / 열기
      • 상태 변경에 따른 comment 끝줄에 {isClosed && <Comment type="CLOSE" />}
  • SideBar
    • API PATCH 해당 이슈 담당자/레이블/마일스톤 정보 실시간 수정
  • Comment
    • Issue의 author와 Comment의 author 비교
    • (추가 구현 사항) recoil의 userInfo와 author를 비교해 편집버튼 토글
  • CommentModal
    • API POST로 첨부된 파일 보내기 + response로 url 받아오기
    • API POST 댓글 등록
    • API DELETE + /issuelist로 리다이렉트

생각할 점

  • 라우터를 /issue/id로 상세페이지만드는게 낫지 않을까?
    • 지금처럼 atom으로 '내가 보고있는 이슈 정보' 보관하는 것 보다 일반적인 방식일듯?

[iOS] 레이블 리스트 화면

  • NavigationController 구성 - 제목 & 버튼 생성
  • 레이블 TableView 구성 - 마일스톤 뷰 구성 시 재사용할 수 있도록 고려
  • 헥스 코드 -> UIColor 변환 모델
  • API 통해 Label List 불러와서 표시하기
  • delegate / datasource 객체 분리하기
  • 리스트 오토레이아웃 수정하기

[iOS] OAuth 인증 만료 (+로그아웃)

할 일

  • 앱 실행 상황에서의 토큰 만료 확인
  • 사용자의 로그아웃 시 토큰 만료 확인
    • 기존 토큰은 만료되는가?
  • 앱 실행 중의 토큰 만료 확인
    • GET / POST 에서 토큰을 사용하므로 그 타이밍에 확인하면 될 것 같다

[FE/Luke&Seong] Recoil 적용

Recoil & Atom

기획서

디자인 피그마

Feature list

구조

  • src
    • atoms folder
      • atoms.js

구성

  • 로그인 상태
  • 현재 이슈 목록
  • 현재 필터?
    • 굳이 atom으로 관리할 필요가 있나
  • 현재 IssueDetail에서 볼 대상 이슈
  • 라벨 / 마일스톤 / 감독자? 목록
    • 어차피 사용자가 여러 명일 경우 실시간으로 목록을 갱신해야되는데 불러올때마다 새로 GET해오는게 맞지않나?
    • 그렇다면 목록을 보관하는게 아니라 쓸 때마다 불러오니까 atom에 담을필요없지않나

[FE/Seong] 미구현사항 목록

  • SideBar
    • /detailissue
      • 이슈 초기 담당자 / 레이블 / 마일스톤 추가
      • API 변동시 바로 PATCH
      • position : relative로 이슈삭제버튼 추가 및 위치조정
    • 클릭시 팝업 + 해당 담당자 / 레이블 / 마일스톤 목록 + 체크박스? 추가
  • IssueList
    • 필터의 atom화 : filterFilter?
    • Header에서 현재 담당자 / 레이블 / 마일스톤 / 작성자를 통한 필터링 : headerFilter
    • API 이슈 선택시 "상태 수정" 버튼 렌더 + 선택이슈 일괄 open, close
  • NewIssue
    • API 이슈 등록 / 파일 첨부
    • focus일때 배경색 변경
  • LabelList
    • API 이슈 CRUD

기타

  • API에서 이슈 닫은 시간 속성도 필요!

[iOS] 키보드 내려가지 않는 현상

앱 전반 통틀어 빈 공간을 터치해도 키보드가 내려가지 않는 현상을 고칠 필요가 있습니다.

  • 로그인
  • 이슈 작성
  • 레이블 작성
  • 마일스톤 작성

[iOS] 마일스톤 구현

View 구성

  • 마일스톤 메인 화면 구현 (TableView)
  • 마일스톤 Cell 구현(TableViewCell)
    - 스택으로 구현하기 (AutoLayout)
  • 마일스톤 추가 버튼 구성
  • 셀 스와이프 할 시 해당 셀 삭제
  • 마일스톤 추가 편집 화면 구성

기능 구현

  • API 통신 GET 이후 메인화면에 보이기
  • 화면 추가 할 때 API 통신 POST 이후 메인화면 업데이트
  • API 통신 DELETE 이후 메인화면에 업데이트

이슈

마지막 4번째 스택에들어가는 Custom UIView가 제대로 적용이 안된다. 일단은 네트워크부터하기

공통 작업 중 변경 사항

작업한 기능
마일스톤 추가,삭제,수정관련 기능 추가

공통사항중 편집 사항

  • 편집과 삭제 순서 변경 (마일스톤만 해당)

  • 마일스톤 완료일 포맷에 맞는지 체크함에 따라 라벨 색상을 변경해야 하는데 MultipleLineInputStackView에서는 foreach() 안에서 라벨을 생성해서 해당 라벨 색상을 변경할 수 없음.

  • 따라서 큰 틀을 바꾸진 않았고 index를 체크해서 itmes[2] 이면 추가로 만든 커스텀 라벨을 추가하고, 포맷에 맞게 해당 라벨 색을 변경하도록 바꿈

  • 더 괜찮은 리팩토링이 있는지 아직 확인이 되지않았음

Originally posted by @JacksonPk in #68 (comment)

[iOS] 소셜로그인 (OAuth) 이후 자동 메인페이지 전환

  • Updated

  • 로그아웃 이후에 다시 로그인 할 경우 이 현상이 발생

  • 다시 실행시키면 자동으로 IssueTrackerTabBarController로 간다.(Scene에서 처리해서 그런듯)

  • 쿠키가 존재하지 않는경우 : 최초에는 소셜로그인 이후 다음페이지 자동전환가능.

  • 쿠키가 존재하는경우 : "Warning: Attempt to present <> on while a presentation is in progress!"
    다시 클릭하면 전환은 된다.

Keychain을 통해 로그인된 jwt가 존재한다면 처음에 로그인페이지를 보여주지 않고 메인화면부터 보여주게 하기.

해결

  • definesPresentationContext = true 하면
    로그인 뷰에서 열었던 webView의 최상단 root view로 가게 한 다음 present가 적용이 된다.

  • 이것으로 사용자가 로그아웃하고 재 로그인 할 때 쿠키가 남아있어서 자동적으로 화면전환이 용이하다.

  • 위의 방식이 되질 않아서 loginInfo가 저장된 상태로 다시 Save()를 해서 생기는 문제.

  • keyChainServer.read()를 통해서 이미 저장되어있는지 확인을 한다.

[iOS] userName이 반영되지 않는 문제

문제 상황

  • IssueTrackerTabBarController를 생성하기 위한 Creator 객체 생성 이후, 내 계정 탭에서 유저 이름을 가져오지 못하는 문제
  • 탭바의 viewController들을 LoginInfoContainer로 다운캐스팅하는 과정에서 nil이 발생하여 LoginInfo를 전달하지 못함

해결

  • ViewController -> (OOOViewController) -> LoginInfoContainer
  • LoginInfoContainer 프로토콜은 ViewController의 child인 OOOViewController에서 채택하고 있는데,
  • ViewController 레벨에서 LoginInfoContainer로 다운캐스팅을 시도할 경우
  • 해당 프로토콜을 채택하고 있는 객체일지라도 다운캐스팅에 실패함

-> OOOViewController를 생성하는 과정에서 바로 LoginInfo를 넣어줄 수 있도록, Creator 객체에 LoginInfo를 전달하는 것으로 수정

[iOS] 레이블 씬의 ViewController / View 재사용을 위한 리팩토링

  • TextField 공백 판단 방법 개선
  • EditStackView 분리
  • TopMenuView 분리
  • 추가 / 수정 ViewController 재사용성 개선
    - 현재 공통 부분 Subclassing 중
    - 그러나 추가 버튼 기능 외엔 다른 점이 없어서 과도해보임
    - 필요한 클로저를 셋팅하는 편이 나을 것 같다

[iOS] 테스트 코드 작성하기

공부

  • 어떤 모듈에 대해 유닛테스트를 작성하면 좋은가? 무엇을 테스트해야 하는가?
  • 테스트 코드는 어떻게 작성해야할까?
  • 테스트하기에 용이한 구조

작성하기

  • 네트워크 테스트

[iOS] Network Layer 개선

  • Network Error Alert
  • RequestManager 개선
    • Parameter는 init 시 포함시키지 말기
    • Parameter 타입 모두 JSON으로 보내도 되는지?
  • LoginInfo SingleTon 변경
    • 모든 header에 token 필요
    • LoginInfo를 매번 넘겨주니 굉장히 복잡...
    • Single 객체여도 되는 이유 충분

[FE/Seong] Label API 적용

#17
라벨 http://3.34.122.67/api/labels

  • 전체보기 GET: http://3.34.122.67/api/labels
    Response Body

     {
    "data": [
        {
            "id": "Long",
            "name": "String",
            "content": "String",
            "color_code": "String",
        }
    ],
    "msg": "String"
    }
  • 라벨 추가 POST: http://3.34.122.67/api/labels
    Request Body

    {
      "name":"String",
      "content":"String",
      "color_code":"String"
    }
  • 삭제 DELETE: http://3.34.122.67/api/labels/{@labelId}

  • 편집 PUT: http://3.34.122.67/api/labels/{@labelId}
    Request Body

    {
      "name":"String",
      "content":"String",
      "color_code":"String"
    }
    

[FE/Seong] NewIssue

NewIssue

기획서

디자인 피그마

Feature list

구조

  • NewIssue router-page
    • NewIssueHeader
    • SideBar common component
    • Content
      • Title
      • Body
      • FileAttacher??
    • CompleteButton

기능

  • Title글자에 반응해 완료버튼 활성화 / 비활성화
  • Body글자에 반응해 띄어쓰기 포함 22자 따위 렌더링
  • 파일 첨부하기
  • API POST 완료 버튼 클릭시 이슈 등록하기
  • API POST 첨부된 파일 보내기 + response로 받은 url Body에 넣어주기(마크다운형식)
  • SideBar
    • API GET 담당자 / 레이블 / 마일스톤 목록 가져오기
    • 받아온 목록에 따른 모달 렌더링, 라운드버튼
  • 추가구현사항 markdown parser

[iOS] 레이블 추가 페이지

  • 레이블 속성 textFields 구성
  • 랜덤 컬러 버튼 구현
  • 레이블 미리보기 구현
  • 새 레이블 POST
  • POST 후 리스트 화면 업데이트

[FE/Seong] LabelList

LabelList

기획서

디자인 피그마

Feature list

구조

  • LabelList
    • Header
      • Tab (IssueList의 Tab common으로)
      • AddButton
    • NewLabelModal
    • List
      • Label
        • EditLabel

기능

  • API GET 라벨 목록
  • AddButton 클릭시 NewLabelModal 추가
    • relative로 서로 밀어내게
  • Label에서 편집버튼 클릭시 EditModal로 변경
    • 여기도 relative로
  • API POST PATCH DELETE 라벨 추가 편집 삭제 버튼
    • 각 API 호출 후 GET or response parse, labelList가 변하면 리렌더링

[mi1-123] 마일스톤 변경 기능

기획서 링크()

하위태스크
[ ] css작업
[ ] ui컴포넌트 개발
[ ] 커스텀훅 개발

예상시간
8h

이슈
기획서와 완료되지 않은 상태.
구디가 좀 피곤한 느낌.
아무개 예비군훈련(ㅠ.ㅠ)

[iOS] 이슈 작성 화면

  • 기본 UI 구성
    • BarButton -> ImageBarButton 재사용
    • Segmented Control
    • 제목 입력란
    • 내용 입력란 -> 여러줄의 텍스트 입력: textView?
    • 추가 정보 입력란 -> MultiLineInputStackView 활용
  • 마크다운 -> 라이브러리 탐색 후 적용
  • 마일스톤, 레이블, 담당자 선택 화면 -> 각 리스트 뷰컨트롤러 재사용하여 네비게이션 전환
    기존 뷰컨트롤러의 상단 우측 버튼을 외부에서 설정할 수 있도록 변경
    해당 버튼의 액션을 클로저로 넘겨 줄 수 있도록 변경
    Delegate를 외부에서 넘겨줄 수 있도록 변경
    다중 터치 후 우측 버튼 클릭 시 선택한 아이템 정보 받을 수 있도록.
    -> 기존 뷰컨트롤러 활용하려고 했으나 디자인 변형이 필요하여 제네릭한 viewcontroller를 새로 생성하여 마일스톤, 레이블, 담당자에 모두 적용하는 것으로 변경
    • 제네릭한 ViewController 생성
    • 각 Cell 생성
    • Datasource, Delegate 역시 제네릭하게 사용할 수 있도록 구성
  • POST API 적용

[FE/Seong] IssueList

IssueList

기획서

디자인 피그마

Feature list

구조

  • IssueList
    • Filter
      • FilterButton
      • FilterInput
      • FilterPopUp
    • Controller
      • LabelTab
      • MileStoneTab
      • AddButton
    • List
      • ListHeader
      • Issue

기능

  • API GET 현재 이슈 목록 가져오기
  • Filter
    • 클릭시 팝업 온 오프
    • 항목 선택시 필터 적용 - FilterBody 변경 + IssueList / List 목록 변경
  • Controller
    • 각 탭 클릭시 화면 전환 (react-router의 리다이렉트)
  • List
    • 헤더에서 담당자, 레이블, 마일스톤, 작성자를 통한 필터링
      • issue를 순회하며 담,레,마,작 목록을 보관할 것인가, 혹은 필터를 클릭시 GET으로 다시 가져올 것인가
    • 일괄선택
    • 선택이슈 일괄 편집 (API PATCH Open/Closed)
    • 각각의 이슈 선택시 해당 이슈의 상세페이지로 리다이렉트 + API GET

추가 작업 필요 사항

  • 현재 구조상 Label을 title과 color를 넣어서 컴포넌트로 만들어 .map()돌릴텐데 공통컴포넌트로 나중에 구현
  • Label에 더해 Icon친구들도 재사용이 좀 되는데 분리할 것
  • 이슈의 담당자, 레이블, 마일스톤, 작성자 위치 추가
    • 담당자, 작성자의 프로필이미지, 레이블과 마일스톤의 컴포넌트
  • 상태 수정 버튼의 팝업? 모달을 미처 못만들었다, 추가필요
  • 데이터의 recoil화 이후 Filter의 필터에 맞춰
    • List/Header의 열린이슈개수, 닫힌이슈개수 관측
    • List의 map()전 filter() 처리 추가
    • interface 친구들도 config폴더안에 파일로 만들어서 import해오자
  • 난리난 props 개수 정리
    • 하나의 객체로 받기 -> 이러느니 props때리고 해체할당이 낫지않나

[FE/Seong] Apply issue API

Issue API 적용

기획서

디자인 피그마

Feature list

API 구조 #17

  • 전체보기 GET: http://3.34.122.67/api/issues
     {
         "data": [
             {
                 "issueNumber": 1,
                 "title": "[BE] Issue 등록",
                 "status": true,
                 "author": {
                     "id": 5,
                     "name": "Starve",
                     "imageUrl": "https://avatars.githubusercontent.com/u/69128652?v=4"
                 },
                 "assignees": [],
                 "labels": [],
                 "milestone": {
                     "id": 4,
                     "title": "코드스쿼드 과정"
                 },
                 "created_date": "2021-06-22 07:19"
             },
             {
                 "issueNumber": 2,
                 "title": "[BE] Issue 등록",
                 "status": false,
                 "author": {
                     "id": 5,
                     "name": "Starve",
                     "imageUrl": "https://avatars.githubusercontent.com/u/69128652?v=4"
                 },
                 "assignees": [
                     {
                         "id": 1,
                         "name": "JINSEO PARK",
                         "imageUrl": "https://avatars.githubusercontent.com/u/52390975?v=4"
                     }
                 ],
                 "labels": [
                     {
                         "id": 1,
                         "name": "documentation",
                         "colorCode": "#84e6b1"
                     }
                 ],
                 "milestone": {
                     "id": 4,
                     "title": "코드스쿼드 과정"
                 },
                 "created_date": "2021-06-22 07:21"
             }
         ],
         "error": null
     }
  • 상세 보기 GET: http://3.34.122.67/api/issues/{issueId}

    {
        "data": {
            "issueNumber": 1,
            "title": "[BE] Issue 등록",
            "status": true,
            "author": {
                "id": 5,
                "name": "Starve",
                "imageUrl": "https://avatars.githubusercontent.com/u/69128652?v=4"
            },
            "assignees": [],
            "labels": [],
            "milestone": {
                "id": 4,
                "title": "코드스쿼드 과정",
                "totalIssueCount": 5,
                "openIssueCount": 4
            },
            "comment": [
                {
                    "id": 1,
                    "description": "코멘트",
                    "writer": {
                        "id": 5,
                        "name": "Starve",
                        "imageUrl": "https://avatars.githubusercontent.com/u/69128652?v=4"
                    },
                    "created_date": "2021-06-22 07:19"
                }
            ],
            "created_date": "2021-06-22 07:19"
        },
        "error": null
    }
  • 추가 POST: http://3.34.122.67/api/issues
    Request Body

    {
        "title" : "String",
        "comment" : "String",
        "assigneeIds" : ["int"],
        "labelIds" : ["int"],
        "milestoneId" : "int"
    }
  • 삭제

    • 이슈 삭제 DELETE: http://3.34.122.67/api/issues/{issueId}
    • 마일스톤 삭제 DELETE: http://3.34.122.67/api/issues/{issueId}/milestone
    • 라벨 삭제 DELETE: http://3.34.122.67/api/issues/{issueId}/label
    • 담당자 삭제 DELETE: http://3.34.122.67/api/issues/{issueId}/assignee
  • 편집 PUT: http://3.34.122.67/api/issues/{issueId}

    • 타이틀 수정 PUT: http://3.34.122.67/api/issues/{issueId}/title
      Request Body

      {
          "title" : "String"
      }
    • 마일스톤 수정 PUT: http://3.34.122.67/api/issues/{issueId}/milestone
      Request Body

      {
          "milestoneId" : "int"
      }
    • 라벨 수정PUT: http://3.34.122.67/api/issues/{issueId}/label
      Request Body

      {
          "labelIds" : ["int"],
      }
    • 담당자 수정PUT: http://3.34.122.67/api/issues/{issueId}/assignee
      Request Body

      {
          "assigneeIds" : ["int"]
      }
  • 이슈 닫기 PUT: http://3.34.122.67/api/issues/close
    이슈 열기 PUT: http://3.34.122.67/api/issues/open
    Request Body

    {
        "issueId" : [2]
    }
  1. 코멘트
  • 코멘트 추가
    POST: http://3.34.122.67/api/issues/{issueId}
    Requset Body

    {
        "description":"String"
    }
  • 코멘트 수정
    PUT: http://3.34.122.67/api/comments/{commentId}

    Requset Body

    {
        "description":"String"
    }
  • 코멘트 삭제
    DELETE: http://3.34.122.67/api/comments/{commentId}

먼저 issue와 user의 interface 바꿀 것!

  • issue
    • id => issueNumber
    • created_date
    • assignees, labels
  • user
    • loginId => name
    • profileUrl => imageUrl
    • id 추가

적용대상

  • Issuelist
    • 렌더와 동시에 전체목록 GET
    • Header의 '선택한 이슈 열기/닫기' PUT
  • NewIssue
    • SideBar
      • 목록 GET
    • 완성된 issue POST
  • DetailIssue
    • SideBar
      • 목록 GET
      • 수정 실시간 반영 PUT
    • 제목 편집 PUT
    • 이슈 열기 닫기 PUT
    • 댓글 편집 PUT
    • 댓글 추가 POST

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.