Commit 7d2a0a29 authored by KangMin An's avatar KangMin An
Browse files

Update & Create: 사용자 정보 및 날씨데이터 접근 경로 생성 및 명세 수정

parent 35c2084e
...@@ -6,12 +6,23 @@ ...@@ -6,12 +6,23 @@
| :------------- | :---------: | :---------------- | :---------------------------------------------------------- | | :------------- | :---------: | :---------------- | :---------------------------------------------------------- |
| Root | ﹒ | /api | 서버의 기본 경로 | | Root | ﹒ | /api | 서버의 기본 경로 |
| Data Collector | GET | /data/input?... | 아두이노를 통해 수집한 자료 등록 (내부, 외부는 쿼리로 구분) | | Data Collector | GET | /data/input?... | 아두이노를 통해 수집한 자료 등록 (내부, 외부는 쿼리로 구분) |
| Data - User | GET | /data/user/:id | 사용자 지정 장소의 날씨 데이터 요청 | | Data | GET | /data/user | 사용자 지정 장소의 날씨 데이터 요청 |
| Data - Outside | GET | /data/outside/:id | 해당 지역구의 날씨 데이터 요청 | | Data | GET | /data/outside/:id | 해당 지역구의 날씨 데이터 요청 |
| Local Code | GET | /data/loccode | 행정 구역 코드 요청 | | Data | GET | /data/loccode | 행정 구역 코드 요청 |
| Auth | POST | /signup | 회원가입 요청 | | Auth | POST | /signup | 회원가입 요청 |
| Auth | POST | /login | 로그인 요청 | | Auth | POST | /login | 로그인 요청 |
| Auth | POST | /:id/edit-profile | 회원 정보 수정 요청 | | Auth | GET | /confirm?... | 메일 인증용 토큰의 유효성 확인 요청 |
| User Info | GET | /user-info | 회원 정보 요청 |
| User Info | POST | /edit-profile | 회원 정보 수정 요청 |
| User Info | POST | /set-loccode | 회원 지역 코드 설정 요청 |
<br><br>
## 주소 접근 방법
[ "http://localhost:[your_port]" or "your_domain"]/api/---[URI]--
먼저 도메인을 입력 후, api서버의 기초 주소인 /api를 입력하고 위의 표 중 필요한 경로로 접근합니다.
<br><br> <br><br>
...@@ -41,11 +52,15 @@ ...@@ -41,11 +52,15 @@
2021.05.07 +) Data Collector의 경우 Post 방식으로 보내주는 것이 맞으나, 현재 Get방식을 이용하고 있습니다. 올해 초 부터 아두이노에서 POST로 전송을 하고자 여러 자료를 찾아 봤지만, 방법을 찾지 못해 일단 진행 하였습니다. 방법을 발견하면 수정을 진행하겠습니다. 2021.05.07 +) Data Collector의 경우 Post 방식으로 보내주는 것이 맞으나, 현재 Get방식을 이용하고 있습니다. 올해 초 부터 아두이노에서 POST로 전송을 하고자 여러 자료를 찾아 봤지만, 방법을 찾지 못해 일단 진행 하였습니다. 방법을 발견하면 수정을 진행하겠습니다.
<br>
### 2021.07.12 \_ 경로 수정 ### 2021.07.12 \_ 경로 수정
1. 도 정보를 가져오는 경로 수정 1. 도 정보를 가져오는 경로 수정
: loccode/do -> loccode/doe : loccode/do -> loccode/doe
<br>
### 2021.07.19 \_ 경로 수정 ### 2021.07.19 \_ 경로 수정
1. API 서버로의 기본 주소 수정 1. API 서버로의 기본 주소 수정
...@@ -53,3 +68,19 @@ ...@@ -53,3 +68,19 @@
2. 행정 구역 코드 데이터 주소 수정 2. 행정 구역 코드 데이터 주소 수정
: "도", "시/군/구", "읍/면/동"의 데이터를 따로 요청할 수 있던 것에서, 한번에 처리하도록 변경 : "도", "시/군/구", "읍/면/동"의 데이터를 따로 요청할 수 있던 것에서, 한번에 처리하도록 변경
<br>
### 2021.07.26 \_ 경로 추가 및 분류 변경
1. 사용자 정보 주소 추가
: 사용자의 정보를 요청하는 주소 추가 "/user-info"
2. 사용자 지역 코드 수정 주소 추가
: 사용자의 지역 코드 수정 주소 "/set-loccode" 추가
3. 사용자 인증 주소 추가
: 사용자가 메일을 통해 발급받은 주소로 이동시 토큰의 유효성을 검사하는 주소 "/confirm" 추가
4. 사용자 인증과 사용자 정보 주소 분류 구분
: 사용자 인증에 관한 주소 "Auth", 사용자 정보에 관한 주소 "User Info" 분류 구분.
...@@ -106,6 +106,14 @@ export const getUserWeatherData = (req, res) => { ...@@ -106,6 +106,14 @@ export const getUserWeatherData = (req, res) => {
res.status(statusCode.ok).json({ msg: serverMSG.server_ok, content: result }); res.status(statusCode.ok).json({ msg: serverMSG.server_ok, content: result });
}; };
// 실외 날씨 데이터 요청 처리
export const getOutWeatherData = (req, res) => {
// 실외 지역 번호를 통해 날씨 데이터 전송.
res
.status(statusCode.ok)
.json({ msg: serverMSG.server_ok, content: "Outside Weather Data" });
};
// 지역 코드 요청 처리 // 지역 코드 요청 처리
export const getLocCode = async (req, res) => { export const getLocCode = async (req, res) => {
/* 통합 지역 코드 및 이름 json으로 생성 및 전송 */ /* 통합 지역 코드 및 이름 json으로 생성 및 전송 */
......
...@@ -139,8 +139,6 @@ export const getConfirm = async (req, res) => { ...@@ -139,8 +139,6 @@ export const getConfirm = async (req, res) => {
const payload = { const payload = {
email: user.email, email: user.email,
nick_name: user.nick_name,
loc_code: user.loc_code,
}; };
const accessT = jwt.sign(payload, process.env.AUTH_ACCESS_SECRETKEY, { const accessT = jwt.sign(payload, process.env.AUTH_ACCESS_SECRETKEY, {
...@@ -157,6 +155,32 @@ export const getConfirm = async (req, res) => { ...@@ -157,6 +155,32 @@ export const getConfirm = async (req, res) => {
} }
}; };
// 사용자 정보 요청 처리
export const getUserInfo = async (req, res) => {
const {
cookies: { acs_token },
} = req;
const decoded = jwt.decode(acs_token);
const result = await db.User.findAll({ where: { email: decoded.email } });
res.status(statusCode.ok).json({ user_info: result });
};
// 사용자 정보 수정 요청 처리
export const postEditProfile = (req, res) => {
const {
cookies: { acs_token },
} = req;
// 수신한 변경 내용들을 통해 DB Update.
res
.status(statusCode.ok)
.json({ msg: serverMSG.server_ok, content: "Server OK" });
};
// 사용자의 지역 코드 설정 처리 // 사용자의 지역 코드 설정 처리
export const postSetLoccode = async (req, res) => { export const postSetLoccode = async (req, res) => {
const { const {
...@@ -165,7 +189,6 @@ export const postSetLoccode = async (req, res) => { ...@@ -165,7 +189,6 @@ export const postSetLoccode = async (req, res) => {
} = req; } = req;
const decoded = jwt.decode(acs_token); const decoded = jwt.decode(acs_token);
console.log(decoded);
await db.User.update( await db.User.update(
{ loc_code: Number(loccode) }, { loc_code: Number(loccode) },
......
...@@ -3,14 +3,21 @@ import routes from "../routes"; ...@@ -3,14 +3,21 @@ import routes from "../routes";
import { import {
getDataInput, getDataInput,
getLocCode, getLocCode,
getOutWeatherData,
getUserWeatherData, getUserWeatherData,
} from "../controllers/dataController"; } from "../controllers/dataController";
import { onlyPrivate } from "../middlewares"; import { onlyPrivate } from "../middlewares";
const dataRouter = express.Router(); const dataRouter = express.Router();
// Weather Data Collection
dataRouter.get(routes.dataInput, getDataInput); dataRouter.get(routes.dataInput, getDataInput);
// Send Weather Data
dataRouter.get(routes.dataUser, onlyPrivate, getUserWeatherData); dataRouter.get(routes.dataUser, onlyPrivate, getUserWeatherData);
dataRouter.get(routes.dataOutside, getOutWeatherData);
// Send Location Info
dataRouter.get(routes.locCode, getLocCode); dataRouter.get(routes.locCode, getLocCode);
export default dataRouter; export default dataRouter;
...@@ -6,6 +6,8 @@ import { ...@@ -6,6 +6,8 @@ import {
getLogin, getLogin,
getSetLoccode, getSetLoccode,
getSignup, getSignup,
getUserInfo,
postEditProfile,
postLogin, postLogin,
postSetLoccode, postSetLoccode,
postSignup, postSignup,
...@@ -14,16 +16,20 @@ import { onlyPrivate } from "../middlewares"; ...@@ -14,16 +16,20 @@ import { onlyPrivate } from "../middlewares";
const globalRouter = express.Router(); const globalRouter = express.Router();
globalRouter.get("/", getHome); // For development test. // For development test.
globalRouter.get("/", getHome);
globalRouter.get(routes.signup, getSignup);
globalRouter.get(routes.login, getLogin);
globalRouter.get(routes.setLoccode, onlyPrivate, getSetLoccode);
// Authentication // Authentication
globalRouter.get(routes.signup, getSignup); // For development test.
globalRouter.get(routes.login, getLogin); // For development test.
globalRouter.get(routes.setLoccode, onlyPrivate, getSetLoccode); // For development test.
globalRouter.post(routes.signup, postSignup); globalRouter.post(routes.signup, postSignup);
globalRouter.post(routes.login, postLogin); globalRouter.post(routes.login, postLogin);
globalRouter.get(routes.confirm, getConfirm); globalRouter.get(routes.confirm, getConfirm);
// User Info
globalRouter.get(routes.userinfo, onlyPrivate, getUserInfo);
globalRouter.post(routes.editProfile, onlyPrivate, postEditProfile);
globalRouter.post(routes.setLoccode, onlyPrivate, postSetLoccode); globalRouter.post(routes.setLoccode, onlyPrivate, postSetLoccode);
export default globalRouter; export default globalRouter;
...@@ -16,8 +16,11 @@ const LOCCODE = "/loccode"; ...@@ -16,8 +16,11 @@ const LOCCODE = "/loccode";
const SIGNUP = "/signup"; const SIGNUP = "/signup";
const LOGIN = "/login"; const LOGIN = "/login";
const CONFIRM = "/confirm"; const CONFIRM = "/confirm";
const EDIT_PROFILE = "/edit-profile";
// # User Info
const USER_INFO = "/user-info";
const SET_LOCCODE = "/set-loccode"; const SET_LOCCODE = "/set-loccode";
const EDIT_PROFILE = "/edit-profile";
// # Detail Object // # Detail Object
const DETAIL = "/:id"; const DETAIL = "/:id";
...@@ -32,6 +35,7 @@ const routes = { ...@@ -32,6 +35,7 @@ const routes = {
signup: SIGNUP, signup: SIGNUP,
login: LOGIN, login: LOGIN,
confirm: CONFIRM, confirm: CONFIRM,
userinfo: USER_INFO,
editProfile: EDIT_PROFILE, editProfile: EDIT_PROFILE,
setLoccode: SET_LOCCODE, setLoccode: SET_LOCCODE,
Detail: (id) => { Detail: (id) => {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment