{"info":{"_postman_id":"9c6888f9-575e-4964-a46e-0c974df95a70","name":"COCOO","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"description":"<html><head></head><body></body></html>","owner":"12433390","collectionId":"9c6888f9-575e-4964-a46e-0c974df95a70","publishedId":"UVBznV9T","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"9181D6"},"publishDate":"2021-11-03T01:36:36.000Z"},"item":[{"name":"헤더","item":[{"name":"검색","id":"5925d273-b99e-4e89-938a-f9ae4ea08255","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/search?query=q","description":"<p>현재는 사용자 username만 검색</p>\n","urlObject":{"path":["v1","search"],"host":["http://localhost:3001"],"query":[{"description":{"content":"<p>검색 쿼리</p>\n","type":"text/plain"},"key":"query","value":"q"}],"variable":[]}},"response":[{"id":"c1ae5e11-d70e-4320-b581-6a039d508714","name":"검색","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/search?query=beo","host":["http://localhost:3001"],"path":["v1","search"],"query":[{"key":"query","value":"beo","description":"검색 쿼리"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": [\n        {\n            \"_id\": \"6194d259dd93761039d5666f\",\n            \"name\": \"\",\n            \"username\": \"beomseok\",\n            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/uxuJfcW8cDX--X3fAeXp8.jpg\"\n        }\n    ]\n}"}],"_postman_id":"5925d273-b99e-4e89-938a-f9ae4ea08255"},{"name":"알림 리스트 가져오기","id":"9ef1b010-46ab-4f7f-bc1b-41138c3c60be","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[],"url":"http://localhost:3001/v1/users/:user_id/notifies","urlObject":{"path":["v1","users",":user_id","notifies"],"host":["http://localhost:3001"],"query":[],"variable":[{"description":{"content":"<p>유저 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"6195daa5856537d371ba17f7","key":"user_id"}]}},"response":[{"id":"b8652f25-e818-4bef-bf75-bb4e581c890d","name":"알림 리스트 가져오기","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/users/:user_id/notifies","host":["http://localhost:3001"],"path":["v1","users",":user_id","notifies"],"variable":[{"key":"user_id","value":"6195daa5856537d371ba17f7","description":"유저 고유 식별자"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": [\n        {\n            \"_id\": \"619eee0f19d79f08505cc682\",\n            \"type\": \"postLike\",\n            \"postID\": \"619dbfd42f168789f4599c26\",\n            \"createdAt\": \"2021-11-25T01:59:43.863Z\",\n            \"user\": {\n                \"_id\": \"6194d21006d472d1f4839373\",\n                \"username\": \"hyunmindev\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n            }\n        },\n        {\n            \"_id\": \"619e183b8d843cde2334cff7\",\n            \"type\": \"postLike\",\n            \"postID\": \"619dbfd42f168789f4599c26\",\n            \"createdAt\": \"2021-11-24T10:47:23.740Z\",\n            \"user\": {\n                \"_id\": \"6195daa5856537d371ba17f7\",\n                \"username\": \"codingegg\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n            }\n        },\n        {\n            \"_id\": \"619dd7f95359104774126ff6\",\n            \"type\": \"postLike\",\n            \"postID\": \"619dbfd42f168789f4599c26\",\n            \"createdAt\": \"2021-11-24T06:13:13.371Z\",\n            \"user\": {\n                \"_id\": \"6194d21006d472d1f4839373\",\n                \"username\": \"hyunmindev\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n            }\n        },\n        {\n            \"_id\": \"619dd0495359104774126cde\",\n            \"type\": \"postLike\",\n            \"postID\": \"619dbfd42f168789f4599c26\",\n            \"createdAt\": \"2021-11-24T05:40:25.846Z\",\n            \"user\": {\n                \"_id\": \"6194d21006d472d1f4839373\",\n                \"username\": \"hyunmindev\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n            }\n        },\n        {\n            \"_id\": \"619dcc51f38cae552e70801e\",\n            \"type\": \"postLike\",\n            \"postID\": \"619dbfd42f168789f4599c26\",\n            \"createdAt\": \"2021-11-24T05:23:29.305Z\",\n            \"user\": {\n                \"_id\": \"6194d078928b431f065e0997\",\n                \"username\": \"kdmin0211\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/IMNhw6aSsPZW9V8cIw93A.png\"\n            }\n        },\n        {\n            \"_id\": \"619dcc216690f77cdc6bf20e\",\n            \"type\": \"postLike\",\n            \"postID\": \"619dbfd42f168789f4599c26\",\n            \"createdAt\": \"2021-11-24T05:22:41.692Z\",\n            \"user\": {\n                \"_id\": \"6195daa5856537d371ba17f7\",\n                \"username\": \"codingegg\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n            }\n        },\n        {\n            \"_id\": \"619dcc19f38cae552e707fdd\",\n            \"type\": \"postLike\",\n            \"postID\": \"619dbfd42f168789f4599c26\",\n            \"createdAt\": \"2021-11-24T05:22:33.339Z\",\n            \"user\": {\n                \"_id\": \"6194d078928b431f065e0997\",\n                \"username\": \"kdmin0211\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/IMNhw6aSsPZW9V8cIw93A.png\"\n            }\n        },\n        {\n            \"_id\": \"619dcaff6690f77cdc6bf158\",\n            \"type\": \"postLike\",\n            \"postID\": \"619dbfd42f168789f4599c26\",\n            \"createdAt\": \"2021-11-24T05:17:51.338Z\",\n            \"user\": {\n                \"_id\": \"6195daa5856537d371ba17f7\",\n                \"username\": \"codingegg\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n            }\n        },\n        {\n            \"_id\": \"619dc7662f168789f459a0da\",\n            \"type\": \"postLike\",\n            \"postID\": \"619dbfd42f168789f4599c26\",\n            \"createdAt\": \"2021-11-24T05:02:30.689Z\",\n            \"user\": {\n                \"_id\": \"6195daa5856537d371ba17f7\",\n                \"username\": \"codingegg\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n            }\n        },\n        {\n            \"_id\": \"619dc7642f168789f459a0cc\",\n            \"type\": \"postLike\",\n            \"postID\": \"619dbfd42f168789f4599c26\",\n            \"createdAt\": \"2021-11-24T05:02:28.478Z\",\n            \"user\": {\n                \"_id\": \"6195daa5856537d371ba17f7\",\n                \"username\": \"codingegg\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n            }\n        },\n        {\n            \"_id\": \"619dc1e42f168789f4599fb3\",\n            \"type\": \"postLike\",\n            \"postID\": \"619dbfd42f168789f4599c26\",\n            \"createdAt\": \"2021-11-24T04:39:00.509Z\",\n            \"user\": {\n                \"_id\": \"6195daa5856537d371ba17f7\",\n                \"username\": \"codingegg\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n            }\n        },\n        {\n            \"_id\": \"619dc1e32f168789f4599fa7\",\n            \"type\": \"postLike\",\n            \"postID\": \"619dbfd42f168789f4599c26\",\n            \"createdAt\": \"2021-11-24T04:38:59.329Z\",\n            \"user\": {\n                \"_id\": \"6195daa5856537d371ba17f7\",\n                \"username\": \"codingegg\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n            }\n        },\n        {\n            \"_id\": \"619dc08d2f168789f4599df5\",\n            \"type\": \"postLike\",\n            \"postID\": \"619dbfd42f168789f4599c26\",\n            \"createdAt\": \"2021-11-24T04:33:17.027Z\",\n            \"user\": {\n                \"_id\": \"6195daa5856537d371ba17f7\",\n                \"username\": \"codingegg\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n            }\n        },\n        {\n            \"_id\": \"619dc0442f168789f4599d17\",\n            \"type\": \"postLike\",\n            \"postID\": \"619dbfd42f168789f4599c26\",\n            \"createdAt\": \"2021-11-24T04:32:04.323Z\",\n            \"user\": {\n                \"_id\": \"6195daa5856537d371ba17f7\",\n                \"username\": \"codingegg\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n            }\n        },\n        {\n            \"_id\": \"619dc0232f168789f4599cc8\",\n            \"type\": \"postLike\",\n            \"postID\": \"619dbfd42f168789f4599c26\",\n            \"createdAt\": \"2021-11-24T04:31:31.023Z\",\n            \"user\": {\n                \"_id\": \"6195daa5856537d371ba17f7\",\n                \"username\": \"codingegg\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n            }\n        },\n        {\n            \"_id\": \"619b949d46bb990935669c9e\",\n            \"type\": \"postLike\",\n            \"postID\": \"619b81ad89c4ba77b29096c3\",\n            \"createdAt\": \"2021-11-22T13:01:17.267Z\",\n            \"user\": {\n                \"_id\": \"6194d21006d472d1f4839373\",\n                \"username\": \"hyunmindev\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n            }\n        },\n        {\n            \"_id\": \"619724ee85cd9fec558bbc1b\",\n            \"type\": \"postLike\",\n            \"postID\": \"6196471a85cd9fec558b7cce\",\n            \"createdAt\": \"2021-11-19T04:15:42.383Z\",\n            \"user\": {\n                \"_id\": \"6196281785cd9fec558b5d1a\",\n                \"username\": \"admin\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/ZjGsFMLTvibUnvqAuiJJ2.png\"\n            }\n        },\n        {\n            \"_id\": \"619665eb85cd9fec558ba63b\",\n            \"type\": \"postLike\",\n            \"postID\": \"6196427185cd9fec558b6563\",\n            \"createdAt\": \"2021-11-18T14:40:43.720Z\",\n            \"user\": {\n                \"_id\": \"6194d078928b431f065e0997\",\n                \"username\": \"kdmin0211\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/IMNhw6aSsPZW9V8cIw93A.png\"\n            }\n        },\n        {\n            \"_id\": \"619665eb85cd9fec558ba630\",\n            \"type\": \"postLike\",\n            \"postID\": \"6196427185cd9fec558b6563\",\n            \"createdAt\": \"2021-11-18T14:40:43.035Z\",\n            \"user\": {\n                \"_id\": \"6194d078928b431f065e0997\",\n                \"username\": \"kdmin0211\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/IMNhw6aSsPZW9V8cIw93A.png\"\n            }\n        },\n        {\n            \"_id\": \"619665e285cd9fec558ba554\",\n            \"type\": \"postLike\",\n            \"postID\": \"6196471a85cd9fec558b7cce\",\n            \"createdAt\": \"2021-11-18T14:40:34.574Z\",\n            \"user\": {\n                \"_id\": \"6194d078928b431f065e0997\",\n                \"username\": \"kdmin0211\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/IMNhw6aSsPZW9V8cIw93A.png\"\n            }\n        },\n        {\n            \"_id\": \"619665e085cd9fec558ba54a\",\n            \"type\": \"postLike\",\n            \"postID\": \"6196471a85cd9fec558b7cce\",\n            \"createdAt\": \"2021-11-18T14:40:32.915Z\",\n            \"user\": {\n                \"_id\": \"6194d078928b431f065e0997\",\n                \"username\": \"kdmin0211\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/IMNhw6aSsPZW9V8cIw93A.png\"\n            }\n        },\n        {\n            \"_id\": \"619664e585cd9fec558b9ca4\",\n            \"type\": \"postLike\",\n            \"postID\": \"6196467285cd9fec558b7a27\",\n            \"createdAt\": \"2021-11-18T14:36:21.778Z\",\n            \"user\": {\n                \"_id\": \"6194d078928b431f065e0997\",\n                \"username\": \"kdmin0211\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/IMNhw6aSsPZW9V8cIw93A.png\"\n            }\n        },\n        {\n            \"_id\": \"619664dc85cd9fec558b9c3b\",\n            \"type\": \"postLike\",\n            \"postID\": \"6196467285cd9fec558b7a27\",\n            \"createdAt\": \"2021-11-18T14:36:12.501Z\",\n            \"user\": {\n                \"_id\": \"6194d078928b431f065e0997\",\n                \"username\": \"kdmin0211\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/IMNhw6aSsPZW9V8cIw93A.png\"\n            }\n        },\n        {\n            \"_id\": \"6196452785cd9fec558b7223\",\n            \"type\": \"postLike\",\n            \"postID\": \"61951fc95c66586c0d137f28\",\n            \"createdAt\": \"2021-11-18T12:20:55.706Z\",\n            \"user\": {\n                \"_id\": \"6195daa5856537d371ba17f7\",\n                \"username\": \"codingegg\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n            }\n        },\n        {\n            \"_id\": \"619644c485cd9fec558b7029\",\n            \"type\": \"postLike\",\n            \"postID\": \"6195f2a0756d9b7f7714ebc2\",\n            \"createdAt\": \"2021-11-18T12:19:16.054Z\",\n            \"user\": {\n                \"_id\": \"6194d078928b431f065e0997\",\n                \"username\": \"kdmin0211\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/IMNhw6aSsPZW9V8cIw93A.png\"\n            }\n        },\n        {\n            \"_id\": \"6196449185cd9fec558b6fa0\",\n            \"type\": \"postLike\",\n            \"postID\": \"6195f2a0756d9b7f7714ebc2\",\n            \"createdAt\": \"2021-11-18T12:18:25.587Z\",\n            \"user\": {\n                \"_id\": \"6194d078928b431f065e0997\",\n                \"username\": \"kdmin0211\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/IMNhw6aSsPZW9V8cIw93A.png\"\n            }\n        },\n        {\n            \"_id\": \"6196448f85cd9fec558b6f8c\",\n            \"type\": \"postLike\",\n            \"postID\": \"6196427185cd9fec558b6563\",\n            \"createdAt\": \"2021-11-18T12:18:23.441Z\",\n            \"user\": {\n                \"_id\": \"6195daa5856537d371ba17f7\",\n                \"username\": \"codingegg\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n            }\n        },\n        {\n            \"_id\": \"6196448d85cd9fec558b6f69\",\n            \"type\": \"postLike\",\n            \"postID\": \"6196425d85cd9fec558b6524\",\n            \"createdAt\": \"2021-11-18T12:18:21.399Z\",\n            \"user\": {\n                \"_id\": \"6194d078928b431f065e0997\",\n                \"username\": \"kdmin0211\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/IMNhw6aSsPZW9V8cIw93A.png\"\n            }\n        },\n        {\n            \"_id\": \"6196448685cd9fec558b6ef9\",\n            \"type\": \"postLike\",\n            \"postID\": \"6196425d85cd9fec558b6524\",\n            \"createdAt\": \"2021-11-18T12:18:14.120Z\",\n            \"user\": {\n                \"_id\": \"6194d078928b431f065e0997\",\n                \"username\": \"kdmin0211\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/IMNhw6aSsPZW9V8cIw93A.png\"\n            }\n        },\n        {\n            \"_id\": \"6196447685cd9fec558b6e93\",\n            \"type\": \"postLike\",\n            \"postID\": \"6196425d85cd9fec558b6524\",\n            \"createdAt\": \"2021-11-18T12:17:58.586Z\",\n            \"user\": {\n                \"_id\": \"6195daa5856537d371ba17f7\",\n                \"username\": \"codingegg\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n            }\n        },\n        {\n            \"_id\": \"6196446b85cd9fec558b6e4d\",\n            \"type\": \"postLike\",\n            \"postID\": \"6196425d85cd9fec558b6524\",\n            \"createdAt\": \"2021-11-18T12:17:47.583Z\",\n            \"user\": {\n                \"_id\": \"6195daa5856537d371ba17f7\",\n                \"username\": \"codingegg\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n            }\n        },\n        {\n            \"_id\": \"6196431485cd9fec558b6971\",\n            \"type\": \"postLike\",\n            \"postID\": \"6195f2a0756d9b7f7714ebc2\",\n            \"createdAt\": \"2021-11-18T12:12:04.667Z\",\n            \"user\": {\n                \"_id\": \"6195daa5856537d371ba17f7\",\n                \"username\": \"codingegg\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n            }\n        },\n        {\n            \"_id\": \"619642ae85cd9fec558b6716\",\n            \"type\": \"follow\",\n            \"createdAt\": \"2021-11-18T12:10:22.468Z\",\n            \"user\": {\n                \"_id\": \"6194d259dd93761039d5666f\",\n                \"username\": \"beomseok37\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/Sk5wcHvx9-ywPmwMhScv-.jpg\"\n            }\n        },\n        {\n            \"_id\": \"6196425585cd9fec558b64f5\",\n            \"type\": \"postLike\",\n            \"postID\": \"6195f2a0756d9b7f7714ebc2\",\n            \"createdAt\": \"2021-11-18T12:08:53.178Z\",\n            \"user\": {\n                \"_id\": \"6195daa5856537d371ba17f7\",\n                \"username\": \"codingegg\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n            }\n        },\n        {\n            \"_id\": \"6196422385cd9fec558b63fd\",\n            \"type\": \"postLike\",\n            \"postID\": \"6195f2a0756d9b7f7714ebc2\",\n            \"createdAt\": \"2021-11-18T12:08:03.940Z\",\n            \"user\": {\n                \"_id\": \"6195daa5856537d371ba17f7\",\n                \"username\": \"codingegg\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n            }\n        },\n        {\n            \"_id\": \"619641dc85cd9fec558b60cb\",\n            \"type\": \"follow\",\n            \"createdAt\": \"2021-11-18T12:06:52.239Z\",\n            \"user\": {\n                \"_id\": \"6194d21006d472d1f4839373\",\n                \"username\": \"hyunmindev\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n            }\n        },\n        {\n            \"_id\": \"619641da85cd9fec558b609e\",\n            \"type\": \"follow\",\n            \"createdAt\": \"2021-11-18T12:06:50.734Z\",\n            \"user\": {\n                \"_id\": \"6194d21006d472d1f4839373\",\n                \"username\": \"hyunmindev\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n            }\n        },\n        {\n            \"_id\": \"619641d985cd9fec558b608c\",\n            \"type\": \"follow\",\n            \"createdAt\": \"2021-11-18T12:06:49.897Z\",\n            \"user\": {\n                \"_id\": \"6194d078928b431f065e0997\",\n                \"username\": \"kdmin0211\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/IMNhw6aSsPZW9V8cIw93A.png\"\n            }\n        },\n        {\n            \"_id\": \"619641d885cd9fec558b6071\",\n            \"type\": \"follow\",\n            \"createdAt\": \"2021-11-18T12:06:48.711Z\",\n            \"user\": {\n                \"_id\": \"6196281785cd9fec558b5d1a\",\n                \"username\": \"admin\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/ZjGsFMLTvibUnvqAuiJJ2.png\"\n            }\n        },\n        {\n            \"_id\": \"619627eb85cd9fec558b5c9d\",\n            \"type\": \"postLike\",\n            \"postID\": \"6195f2a0756d9b7f7714ebc2\",\n            \"createdAt\": \"2021-11-18T10:16:11.468Z\",\n            \"user\": {\n                \"_id\": \"6194d21006d472d1f4839373\",\n                \"username\": \"hyunmindev\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n            }\n        }\n    ]\n}"}],"_postman_id":"9ef1b010-46ab-4f7f-bc1b-41138c3c60be"}],"id":"a43718f1-f304-46b7-ab61-432612278cb3","_postman_id":"a43718f1-f304-46b7-ab61-432612278cb3","description":""},{"name":"글쓰기","item":[{"name":"포스트 작성","id":"6000430e-6d54-4355-bdcd-c70c859df1b8","protocolProfileBehavior":{"disableBodyPruning":true,"disabledSystemHeaders":{}},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"content\": \"test-post\",\r\n    \"userID\": \"6196281785cd9fec558b5d1a\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/posts/","description":"<p>글 작성 Flow</p>\n<p>일반:\n포스트 작성 및 이미지 로드 --&gt; 포스트 작성 API 요청 (포스트 작성 Example 참고)</p>\n<p>Tistory:\n블로그 글 리스트 API 요청 --&gt; 블로그 글 선택 --&gt; Tistory 본문 가져오기 API --&gt; 추가 내용 작성 --&gt; 포스트 작성 API 요청 (Tistory 연동 포스트 작성 Example 참고)</p>\n<p>Alogorithm:\n백준 문제 리스트 검색 API 요청 --&gt; 문제 선택 --&gt; 백준 문제 세부내용 가져오기 API --&gt; 추가 내용 작성 --&gt; 포스트 작성 API 요청 (백준 연동 포스트 작성 Example 참고)</p>\n","urlObject":{"path":["v1","posts",""],"host":["http://localhost:3001"],"query":[],"variable":[]}},"response":[{"id":"8e465e31-fa99-4e65-977e-5031b6f0d303","name":"포스트 작성","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"content\": \"스키마 변경 완료\",\r\n    \"userID\": \"6194d078928b431f065e0997\",\r\n    \"images\": [\"https://kr.object.ncloudstorage.com/cocoo/posts/ENtuwpl_hJzDuWBq7euvc.png\"]\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/posts/"},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": {\n        \"_id\": \"619cc79154ae4abec9e0a2b9\",\n        \"content\": \"스키마 변경 완료\",\n        \"tags\": [],\n        \"createdAt\": \"2021-11-23T10:50:57.810Z\",\n        \"updatedAt\": \"2021-11-23T10:50:57.810Z\",\n        \"user\": {\n            \"_id\": \"6194d078928b431f065e0997\",\n            \"username\": \"kdmin0211\",\n            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/YucySHrnR01g76PMCtSJ6.jpeg\"\n        },\n        \"comments\": [],\n        \"likes\": [],\n        \"images\": [\n            {\n                \"_id\": \"619cc79154ae4abec9e0a2bc\",\n                \"url\": \"https://kr.object.ncloudstorage.com/cocoo/posts/ENtuwpl_hJzDuWBq7euvc.png\"\n            }\n        ]\n    }\n}"},{"id":"9eb07348-4ab5-478a-9861-b03dbb04deed","name":"백준 연동 포스트 작성","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"content\": \"알고리즘 너무 어렵네요...\",\r\n    \"userID\": \"6194d078928b431f065e0997\",\r\n    \"external\": {\r\n        \"title\": \"양방향 통신(polling, long polling, websocket)\",\r\n        \"type\": \"algorithm\",\r\n        \"identity\": \"baekjoon\",\r\n        \"target\": \"1010\",\r\n        \"content\": \"<p>재원이는 한 도시의 시장이 되었다. 이 도시에는&nbsp;도시를 동쪽과 서쪽으로 나누는 큰 일직선 모양의 강이 흐르고 있다.&nbsp;하지만 재원이는 다리가 없어서 시민들이 강을 건너는데 큰 불편을 겪고 있음을 알고 다리를 짓기로 결심하였다. 강 주변에서 다리를 짓기에 적합한 곳을 사이트라고 한다. 재원이는 강 주변을 면밀히 조사해 본 결과 강의 서쪽에는 N개의 사이트가 있고 동쪽에는 M개의 사이트가 있다는 것을 알았다. (N ≤ M)</p>\\n\\n<p>재원이는 서쪽의 사이트와 동쪽의 사이트를 다리로 연결하려고 한다. (이때 한 사이트에는 최대 한 개의 다리만 연결될 수 있다.) 재원이는 다리를 최대한 많이 지으려고 하기 때문에 서쪽의 사이트 개수만큼 (N개) 다리를 지으려고 한다. 다리끼리는 서로 겹쳐질 수 없다고 할 때 다리를 지을 수 있는 경우의 수를 구하는 프로그램을 작성하라.</p>\\n\\n<p><img alt=\\\"\\\" src=\\\"/upload/201003/pic1.JPG\\\" style=\\\"height:353px; width:329px\\\"></p>\",\r\n        \"link\": \"https://www.acmicpc.net/problem/1010\",\r\n        \"info\": {\r\n            \"solvedUserCount\": 15751,\r\n            \"totalTryCount\": 32774,\r\n            \"tear\": \"Silver5\"\r\n        }\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/posts/"},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": {\n        \"_id\": \"619b530a1f295c434f346d92\",\n        \"title\": \"양방향 통신(polling, long polling, websocket)\",\n        \"content\": \"알고리즘 너무 어렵네요...\",\n        \"tags\": [],\n        \"type\": \"external\",\n        \"external\": {\n            \"content\": \"<p>재원이는 한 도시의 시장이 되었다. 이 도시에는&nbsp;도시를 동쪽과 서쪽으로 나누는 큰 일직선 모양의 강이 흐르고 있다.&nbsp;하지만 재원이는 다리가 없어서 시민들이 강을 건너는데 큰 불편을 겪고 있음을 알고 다리를 짓기로 결심하였다. 강 주변에서 다리를 짓기에 적합한 곳을 사이트라고 한다. 재원이는 강 주변을 면밀히 조사해 본 결과 강의 서쪽에는 N개의 사이트가 있고 동쪽에는 M개의 사이트가 있다는 것을 알았다. (N ≤ M)</p>\\n\\n<p>재원이는 서쪽의 사이트와 동쪽의 사이트를 다리로 연결하려고 한다. (이때 한 사이트에는 최대 한 개의 다리만 연결될 수 있다.) 재원이는 다리를 최대한 많이 지으려고 하기 때문에 서쪽의 사이트 개수만큼 (N개) 다리를 지으려고 한다. 다리끼리는 서로 겹쳐질 수 없다고 할 때 다리를 지을 수 있는 경우의 수를 구하는 프로그램을 작성하라.</p>\\n\\n<p><img alt=\\\"\\\" src=\\\"/upload/201003/pic1.JPG\\\" style=\\\"height:353px; width:329px\\\"></p>\",\n            \"link\": \"https://www.acmicpc.net/problem/1010\",\n            \"info\": {\n                \"solvedUserCount\": 15751,\n                \"totalTryCount\": 32774,\n                \"tear\": \"Silver5\"\n            },\n            \"type\": \"algorithm\",\n            \"identity\": \"baekjoon\",\n            \"target\": \"1010\"\n        },\n        \"createdAt\": \"2021-11-22T08:21:30.783Z\",\n        \"updatedAt\": \"2021-11-22T08:21:30.783Z\",\n        \"user\": {\n            \"_id\": \"6194d078928b431f065e0997\",\n            \"username\": \"kdmin0211\",\n            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/YucySHrnR01g76PMCtSJ6.jpeg\"\n        },\n        \"comments\": [],\n        \"likes\": [],\n        \"images\": []\n    }\n}"},{"id":"7197e996-ae31-4343-a23e-ae24d172c8ec","name":"Tistory 연동 포스트 작성","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"userID\": \"6194d078928b431f065e0997\",\r\n    \"content\": \"이게 되나??\",\r\n    \"external\": {\r\n        \"title\": \"양방향 통신(polling, long polling, websocket)\",\r\n        \"link\": \"http://blog.dongmin.dev\",\r\n        \"type\": \"tistory\",\r\n        \"identity\": \"dongmin-tech\",\r\n        \"target\": \"14\",\r\n        \"content\": \"<h4 data-ke-size=\\\"size20\\\"><b>Polling</b></h4>\\n<p data-ke-size=\\\"size16\\\">Polling 방식은 간단하게 특정 시간마다 클라이언트에서 서버로 요청을 하며 응답을 통해 데이터를 갱신합니다. 즉, 아무런 server의 event 가 발생하지 않더라도 모든 클라이언트는 지속적으로 server에게 XMLHttpRequest를 보내게 됩니다. 또한 실시간으로 메시지 전달이 필요한 경우 요청을 보내는 주기가 짧아질 것입니다. 이는 서버의 불필요한 트래픽이 발생합니다.</p>\\n<p data-ke-size=\\\"size16\\\">매 주기마다 서버는 Request의 Header parser 하며, query를 통해 새로운 데이터에 대한 응답을 생성해서 보낼 것입니다. 그 후 서버는 모든 리소스에 대한 정리 작업도 진행해야 할 것입니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<h4 data-ke-size=\\\"size20\\\"><b>Long Polling</b></h4>\\n<p data-ke-size=\\\"size16\\\">기존 양방향 통신으로 사용되는 polling 방식보다 효율적인 방식의 기법입니다.</p>\\n<p data-ke-size=\\\"size16\\\">서버에 주기적으로 요청을 보내는 방식이 아닌 서버에서 클라이언트의 연결을 Keep Alive 헤더를 통해 유지하는 방식입니다.</p>\\n<p data-ke-size=\\\"size16\\\"><b>동작 방식</b></p>\\n<p><figure class='imageblock alignLeft' data-origin-width=\\\"1132\\\" data-origin-height=\\\"896\\\" data-filename=\\\"longpolling.png\\\" width=\\\"394\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"><span data-url='https://blog.kakaocdn.net/dn/wayei/btriDxzznNK/JtMHNogKkthQ3z7sCUFI80/img.png' data-lightbox='lightbox' data-alt=''><img src='https://blog.kakaocdn.net/dn/wayei/btriDxzznNK/JtMHNogKkthQ3z7sCUFI80/img.png' srcset='https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwayei%2FbtriDxzznNK%2FJtMHNogKkthQ3z7sCUFI80%2Fimg.png' data-origin-width=\\\"1132\\\" data-origin-height=\\\"896\\\" data-filename=\\\"longpolling.png\\\" width=\\\"394\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"></span></figure></p>\\n<ul style=\\\"list-style-type: disc;\\\" data-ke-list-type=\\\"disc\\\">\\n<li>우선 Client는 Server로 Keep Alive 헤더를 포함한 GET request를 보내며 응답을 받을 때까지 연결을 유지합니다.</li>\\n<li>Server의 Event 가 발생 시 Client의 GET request에 대해서 응답을 보내게 됩니다.</li>\\n<li>응답을 받은 Client는 다시 동일한 GET request를 보내며 다음 응답을 기다립니다.</li>\\n</ul>\\n<p data-ke-size=\\\"size16\\\">확실히 Server Event 발생 시에만 XMLHttpRequest 가 발생하며 불필요한 트래픽이 발생하지 않으며 실시간 메시지 전달이 가능합니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<p data-ke-size=\\\"size16\\\"><b>단점</b></p>\\n<p data-ke-size=\\\"size16\\\">하지만 주기적으로 데이터들을 한 번에 보내는 polling과 달리 Server Event 시마다 Server의 응답, Client의 GET 요청이 발생합니다. 당연히 서버는 동일하게 HTTP request의 header parser 작업과 응답 객체의 생성 작업을 거칩니다. 즉, 실시간으로 잦은 서버 상태 변경의 요청 즉 caching 되지 않는 request 통신이 이루어지는 경우 polling 보다 더 많은 트래픽이 발생할 수 있습니다.</p>\\n<p data-ke-size=\\\"size16\\\">추가적으로 relative message order의 문제점도 존재합니다.</p>\\n<p><figure class='imageblock alignLeft' data-origin-width=\\\"1024\\\" data-origin-height=\\\"784\\\" data-filename=\\\"cons1.png\\\" width=\\\"457\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"><span data-url='https://blog.kakaocdn.net/dn/dejRWc/btriDxNa1dm/nVRQa4jWRk2cAKRSs4sjZ0/img.png' data-lightbox='lightbox' data-alt=''><img src='https://blog.kakaocdn.net/dn/dejRWc/btriDxNa1dm/nVRQa4jWRk2cAKRSs4sjZ0/img.png' srcset='https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdejRWc%2FbtriDxNa1dm%2FnVRQa4jWRk2cAKRSs4sjZ0%2Fimg.png' data-origin-width=\\\"1024\\\" data-origin-height=\\\"784\\\" data-filename=\\\"cons1.png\\\" width=\\\"457\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"></span></figure></p>\\n<p data-ke-size=\\\"size16\\\">동일한 서버 리소스를 사용하는 클라이언트가 다중 탭으로 동일한 요청을 보내고 해당 요청에 대해서 서버가 Database 작업을 수행한다면 중복 데이터가 2번 저장 혹은 갱신되게 됩니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<p><figure class='imageblock alignLeft' data-origin-width=\\\"1046\\\" data-origin-height=\\\"810\\\" data-filename=\\\"cons2.png\\\" width=\\\"452\\\" height=\\\"350\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"><span data-url='https://blog.kakaocdn.net/dn/DV44W/btriHBVwqOO/wEVKOV8Z9ocXOEgwMWKhK0/img.png' data-lightbox='lightbox' data-alt=''><img src='https://blog.kakaocdn.net/dn/DV44W/btriHBVwqOO/wEVKOV8Z9ocXOEgwMWKhK0/img.png' srcset='https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDV44W%2FbtriHBVwqOO%2FwEVKOV8Z9ocXOEgwMWKhK0%2Fimg.png' data-origin-width=\\\"1046\\\" data-origin-height=\\\"810\\\" data-filename=\\\"cons2.png\\\" width=\\\"452\\\" height=\\\"350\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"></span></figure></p>\\n<p data-ke-size=\\\"size16\\\">또한 서버의 구현에 따라 클라이언트 인스턴스가 메시지 수신을 전혀 하지 못하는 경우가 있습니다. Server event 가 발생하여 응답을 보냈으나 네트워크, 브라우저의 문제 등의 경우로 누락된 경우 Client 가 정상적으로 응답받은 것을 확인하지 못하게 될 것입니다. Client 역시 응답이 중간에 누락된 것을 확인하지 못하고 더 이상 server 와의 통신이 이루어질 수 없을 것입니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<h4 data-ke-size=\\\"size20\\\"><b>Websocket</b></h4>\\n<p data-ke-size=\\\"size16\\\"><b>동작 방식</b></p>\\n<p data-ke-size=\\\"size16\\\">websocket 은 기존의 http protocol 요청을 사용한 양방향 통신(클라이언트가 요청이 없으면 서버에게 응답을 받을 수 없는 구조)을 문제를 해결하기 위해 나온 transport protocol입니다.</p>\\n<p data-ke-size=\\\"size16\\\">처음 서버와 클라이언트 간 http protocol 요청을 통해 handshake 과정을 거칩니다. 웹소켓 연결이 가능함을 handshake 과정에서 판단되면 서버와 클라이언트는 ws protocol로 데이터를 전송할 수 있습니다. 이때 데이터 전송에서 기존 http protocol 양방향 통신 방식의 문제 중 하나인 request header 정보로 인한 불필요한 overhead 가 적습니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<p data-ke-size=\\\"size16\\\"><b>단점</b></p>\\n<ul style=\\\"list-style-type: disc;\\\" data-ke-list-type=\\\"disc\\\">\\n<li>우선 2011 년 이전의 브라우저는 지원하지 않는 단점이 있습니다.</li>\\n<li>stateful protocol 이므로 연결의 종료에 대해서 서버에서 적절한 대처가 있어야 합니다.</li>\\n<li>소켓을 연결을 유지하는 것만으로 비용이 듭니다. 실시간으로 통신을 유지해야 하는 경우가 아니라면 http protocol 방식이 유용할 것입니다.</li>\\n</ul>\\n<h4 data-ke-size=\\\"size20\\\"><a href=\\\"http://Socket.io\\\">Socket.io</a></h4>\\n<p data-ke-size=\\\"size16\\\">websocket의 추가적인 단점은 개발의 피로도입니다. 이러한 피로도를 줄여주는 라이브러리가 <a href=\\\"http://socket.io\\\">Socket.io 입니다.</a> <a href=\\\"http://Socket.io\\\">Socket.io</a> <a href=\\\"%5B%3Chttps://socket.io/docs/v3/how-it-works/%3E%5D(%3Chttps://socket.io/docs/v3/how-it-works/%3E)\\\">How it works</a> 글을 읽어보면 기본 Client와 Server의 연결 방식의 설정은 long polling 방식입니다. 그러한 이유는 Websocket 방식은 브라우저 버전, 프락시, 개인 방화벽, 바이러스 백신 소프트웨어로 인해 항상 연결이 가능한 것은 아닙니다. 그 후 Websocket upgrade 가 가능하다면 Websocket 방식을 사용합니다.</p>\\n<p data-ke-size=\\\"size16\\\">이 글의 내용을 확인해 봤을 때 <a href=\\\"http://Socket.io\\\">Socket.io</a> 라이브러리는 Websocket 방식의 fallback으로 long polling 방식을 사용하고 있습니다. 하지만 long polling 방식은 위에서 확인한 것과 같이 단점이 존재하며 그것은 Websocket 방식 역시 마찬가지입니다.</p>\\n<p data-ke-size=\\\"size16\\\">마지막으로 필자의 생각입니다. 아직 각 양방향 통신의 단점을 완전히 해결할 수 있는 방식이 나오지 않았고 가능한지도 짐작할 수 없습니다. 현재로서는 구현하고 있는 서비스에 대한 알맞은 통신 방식을 선정하여 <a href=\\\"http://Socket.io\\\">Socket.io</a> fallback 설정을 하는 것을 생각해봐야 할 것 같습니다.</p>\"\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/posts/"},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": {\n        \"_id\": \"619b472831db2dc1dd108b3f\",\n        \"content\": \"이게 되나??\",\n        \"tags\": [],\n        \"external\": {\n            \"title\": \"양방향 통신(polling, long polling, websocket)\",\n            \"content\": \"<h4 data-ke-size=\\\"size20\\\"><b>Polling</b></h4>\\n<p data-ke-size=\\\"size16\\\">Polling 방식은 간단하게 특정 시간마다 클라이언트에서 서버로 요청을 하며 응답을 통해 데이터를 갱신합니다. 즉, 아무런 server의 event 가 발생하지 않더라도 모든 클라이언트는 지속적으로 server에게 XMLHttpRequest를 보내게 됩니다. 또한 실시간으로 메시지 전달이 필요한 경우 요청을 보내는 주기가 짧아질 것입니다. 이는 서버의 불필요한 트래픽이 발생합니다.</p>\\n<p data-ke-size=\\\"size16\\\">매 주기마다 서버는 Request의 Header parser 하며, query를 통해 새로운 데이터에 대한 응답을 생성해서 보낼 것입니다. 그 후 서버는 모든 리소스에 대한 정리 작업도 진행해야 할 것입니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<h4 data-ke-size=\\\"size20\\\"><b>Long Polling</b></h4>\\n<p data-ke-size=\\\"size16\\\">기존 양방향 통신으로 사용되는 polling 방식보다 효율적인 방식의 기법입니다.</p>\\n<p data-ke-size=\\\"size16\\\">서버에 주기적으로 요청을 보내는 방식이 아닌 서버에서 클라이언트의 연결을 Keep Alive 헤더를 통해 유지하는 방식입니다.</p>\\n<p data-ke-size=\\\"size16\\\"><b>동작 방식</b></p>\\n<p><figure class='imageblock alignLeft' data-origin-width=\\\"1132\\\" data-origin-height=\\\"896\\\" data-filename=\\\"longpolling.png\\\" width=\\\"394\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"><span data-url='https://blog.kakaocdn.net/dn/wayei/btriDxzznNK/JtMHNogKkthQ3z7sCUFI80/img.png' data-lightbox='lightbox' data-alt=''><img src='https://blog.kakaocdn.net/dn/wayei/btriDxzznNK/JtMHNogKkthQ3z7sCUFI80/img.png' srcset='https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwayei%2FbtriDxzznNK%2FJtMHNogKkthQ3z7sCUFI80%2Fimg.png' data-origin-width=\\\"1132\\\" data-origin-height=\\\"896\\\" data-filename=\\\"longpolling.png\\\" width=\\\"394\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"></span></figure></p>\\n<ul style=\\\"list-style-type: disc;\\\" data-ke-list-type=\\\"disc\\\">\\n<li>우선 Client는 Server로 Keep Alive 헤더를 포함한 GET request를 보내며 응답을 받을 때까지 연결을 유지합니다.</li>\\n<li>Server의 Event 가 발생 시 Client의 GET request에 대해서 응답을 보내게 됩니다.</li>\\n<li>응답을 받은 Client는 다시 동일한 GET request를 보내며 다음 응답을 기다립니다.</li>\\n</ul>\\n<p data-ke-size=\\\"size16\\\">확실히 Server Event 발생 시에만 XMLHttpRequest 가 발생하며 불필요한 트래픽이 발생하지 않으며 실시간 메시지 전달이 가능합니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<p data-ke-size=\\\"size16\\\"><b>단점</b></p>\\n<p data-ke-size=\\\"size16\\\">하지만 주기적으로 데이터들을 한 번에 보내는 polling과 달리 Server Event 시마다 Server의 응답, Client의 GET 요청이 발생합니다. 당연히 서버는 동일하게 HTTP request의 header parser 작업과 응답 객체의 생성 작업을 거칩니다. 즉, 실시간으로 잦은 서버 상태 변경의 요청 즉 caching 되지 않는 request 통신이 이루어지는 경우 polling 보다 더 많은 트래픽이 발생할 수 있습니다.</p>\\n<p data-ke-size=\\\"size16\\\">추가적으로 relative message order의 문제점도 존재합니다.</p>\\n<p><figure class='imageblock alignLeft' data-origin-width=\\\"1024\\\" data-origin-height=\\\"784\\\" data-filename=\\\"cons1.png\\\" width=\\\"457\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"><span data-url='https://blog.kakaocdn.net/dn/dejRWc/btriDxNa1dm/nVRQa4jWRk2cAKRSs4sjZ0/img.png' data-lightbox='lightbox' data-alt=''><img src='https://blog.kakaocdn.net/dn/dejRWc/btriDxNa1dm/nVRQa4jWRk2cAKRSs4sjZ0/img.png' srcset='https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdejRWc%2FbtriDxNa1dm%2FnVRQa4jWRk2cAKRSs4sjZ0%2Fimg.png' data-origin-width=\\\"1024\\\" data-origin-height=\\\"784\\\" data-filename=\\\"cons1.png\\\" width=\\\"457\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"></span></figure></p>\\n<p data-ke-size=\\\"size16\\\">동일한 서버 리소스를 사용하는 클라이언트가 다중 탭으로 동일한 요청을 보내고 해당 요청에 대해서 서버가 Database 작업을 수행한다면 중복 데이터가 2번 저장 혹은 갱신되게 됩니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<p><figure class='imageblock alignLeft' data-origin-width=\\\"1046\\\" data-origin-height=\\\"810\\\" data-filename=\\\"cons2.png\\\" width=\\\"452\\\" height=\\\"350\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"><span data-url='https://blog.kakaocdn.net/dn/DV44W/btriHBVwqOO/wEVKOV8Z9ocXOEgwMWKhK0/img.png' data-lightbox='lightbox' data-alt=''><img src='https://blog.kakaocdn.net/dn/DV44W/btriHBVwqOO/wEVKOV8Z9ocXOEgwMWKhK0/img.png' srcset='https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDV44W%2FbtriHBVwqOO%2FwEVKOV8Z9ocXOEgwMWKhK0%2Fimg.png' data-origin-width=\\\"1046\\\" data-origin-height=\\\"810\\\" data-filename=\\\"cons2.png\\\" width=\\\"452\\\" height=\\\"350\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"></span></figure></p>\\n<p data-ke-size=\\\"size16\\\">또한 서버의 구현에 따라 클라이언트 인스턴스가 메시지 수신을 전혀 하지 못하는 경우가 있습니다. Server event 가 발생하여 응답을 보냈으나 네트워크, 브라우저의 문제 등의 경우로 누락된 경우 Client 가 정상적으로 응답받은 것을 확인하지 못하게 될 것입니다. Client 역시 응답이 중간에 누락된 것을 확인하지 못하고 더 이상 server 와의 통신이 이루어질 수 없을 것입니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<h4 data-ke-size=\\\"size20\\\"><b>Websocket</b></h4>\\n<p data-ke-size=\\\"size16\\\"><b>동작 방식</b></p>\\n<p data-ke-size=\\\"size16\\\">websocket 은 기존의 http protocol 요청을 사용한 양방향 통신(클라이언트가 요청이 없으면 서버에게 응답을 받을 수 없는 구조)을 문제를 해결하기 위해 나온 transport protocol입니다.</p>\\n<p data-ke-size=\\\"size16\\\">처음 서버와 클라이언트 간 http protocol 요청을 통해 handshake 과정을 거칩니다. 웹소켓 연결이 가능함을 handshake 과정에서 판단되면 서버와 클라이언트는 ws protocol로 데이터를 전송할 수 있습니다. 이때 데이터 전송에서 기존 http protocol 양방향 통신 방식의 문제 중 하나인 request header 정보로 인한 불필요한 overhead 가 적습니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<p data-ke-size=\\\"size16\\\"><b>단점</b></p>\\n<ul style=\\\"list-style-type: disc;\\\" data-ke-list-type=\\\"disc\\\">\\n<li>우선 2011 년 이전의 브라우저는 지원하지 않는 단점이 있습니다.</li>\\n<li>stateful protocol 이므로 연결의 종료에 대해서 서버에서 적절한 대처가 있어야 합니다.</li>\\n<li>소켓을 연결을 유지하는 것만으로 비용이 듭니다. 실시간으로 통신을 유지해야 하는 경우가 아니라면 http protocol 방식이 유용할 것입니다.</li>\\n</ul>\\n<h4 data-ke-size=\\\"size20\\\"><a href=\\\"http://Socket.io\\\">Socket.io</a></h4>\\n<p data-ke-size=\\\"size16\\\">websocket의 추가적인 단점은 개발의 피로도입니다. 이러한 피로도를 줄여주는 라이브러리가 <a href=\\\"http://socket.io\\\">Socket.io 입니다.</a> <a href=\\\"http://Socket.io\\\">Socket.io</a> <a href=\\\"%5B%3Chttps://socket.io/docs/v3/how-it-works/%3E%5D(%3Chttps://socket.io/docs/v3/how-it-works/%3E)\\\">How it works</a> 글을 읽어보면 기본 Client와 Server의 연결 방식의 설정은 long polling 방식입니다. 그러한 이유는 Websocket 방식은 브라우저 버전, 프락시, 개인 방화벽, 바이러스 백신 소프트웨어로 인해 항상 연결이 가능한 것은 아닙니다. 그 후 Websocket upgrade 가 가능하다면 Websocket 방식을 사용합니다.</p>\\n<p data-ke-size=\\\"size16\\\">이 글의 내용을 확인해 봤을 때 <a href=\\\"http://Socket.io\\\">Socket.io</a> 라이브러리는 Websocket 방식의 fallback으로 long polling 방식을 사용하고 있습니다. 하지만 long polling 방식은 위에서 확인한 것과 같이 단점이 존재하며 그것은 Websocket 방식 역시 마찬가지입니다.</p>\\n<p data-ke-size=\\\"size16\\\">마지막으로 필자의 생각입니다. 아직 각 양방향 통신의 단점을 완전히 해결할 수 있는 방식이 나오지 않았고 가능한지도 짐작할 수 없습니다. 현재로서는 구현하고 있는 서비스에 대한 알맞은 통신 방식을 선정하여 <a href=\\\"http://Socket.io\\\">Socket.io</a> fallback 설정을 하는 것을 생각해봐야 할 것 같습니다.</p>\",\n            \"link\": \"http://blog.dongmin.dev\",\n            \"type\": \"tistory\",\n            \"identity\": \"dongmin-tech\",\n            \"target\": \"14\"\n        },\n        \"createdAt\": \"2021-11-22T07:30:48.656Z\",\n        \"updatedAt\": \"2021-11-22T07:30:48.656Z\",\n        \"user\": {\n            \"_id\": \"6194d078928b431f065e0997\",\n            \"username\": \"kdmin0211\",\n            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/YucySHrnR01g76PMCtSJ6.jpeg\"\n        },\n        \"comments\": [],\n        \"likes\": [],\n        \"images\": []\n    }\n}"},{"id":"e1e303c7-fe62-4ff4-a5f6-10b9ede7b013","name":"깃허브 Repo 연동 포스트 작성","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"content\": \"공모전 깃허브입니다.\",\r\n    \"userID\": \"6194d078928b431f065e0997\",\r\n    \"external\": {\r\n        \"title\": \"Web_Buxi\",\r\n        \"type\": \"repository\",\r\n        \"content\": \"<div id=\\\"readme\\\" class=\\\"md\\\" data-path=\\\"README.md\\\"><article class=\\\"markdown-body entry-content container-lg\\\" itemprop=\\\"text\\\"><div align=\\\"center\\\" dir=\\\"auto\\\">\\n<a target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\" href=\\\"https://user-images.githubusercontent.com/74395748/139573141-fbfeedbf-a4b8-4b34-ba81-26860d334aeb.png\\\"><img width=\\\"497\\\" alt=\\\"Screen Shot 2021-10-31 at 4 33 04 PM\\\" src=\\\"https://user-images.githubusercontent.com/74395748/139573141-fbfeedbf-a4b8-4b34-ba81-26860d334aeb.png\\\" style=\\\"max-width: 100%;\\\"></a>\\n</div>\\n<div align=\\\"center\\\" dir=\\\"auto\\\">\\n    <p dir=\\\"auto\\\">\\n        Buxi = Bus + Taxi<br>\\n        스마트 하게 호출하는<br>\\n        커뮤니티 모빌리티 서비스\\n    </p>\\n</div>\\n<h2 dir=\\\"auto\\\"><a id=\\\"user-content-개요\\\" class=\\\"anchor\\\" aria-hidden=\\\"true\\\" href=\\\"#개요\\\"><svg class=\\\"octicon octicon-link\\\" viewBox=\\\"0 0 16 16\\\" version=\\\"1.1\\\" width=\\\"16\\\" height=\\\"16\\\" aria-hidden=\\\"true\\\"><path fill-rule=\\\"evenodd\\\" d=\\\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\\\"></path></svg></a>개요</h2>\\n<p dir=\\\"auto\\\">현대인들이 많이 이용하는 대중교통 수단인 버스는 배차간격과 노선이 일정하다 하지만 출퇴근 시간처럼 승객이 많은 시간대가 있고 그렇지 않은 시간대가 있어 불필요한 운행을 하는 버스가 존재한다. 버스의 운행시간과 노선을 경로 최적화를 통해 승객의 수요에 따라 유동적으로 설정함으로써 공(空)버스를 최소화해 탄소 배출량의 감소시키는 것을 목표로 한다.</p>\\n<h2 dir=\\\"auto\\\"><a id=\\\"user-content-공공데이터\\\" class=\\\"anchor\\\" aria-hidden=\\\"true\\\" href=\\\"#공공데이터\\\"><svg class=\\\"octicon octicon-link\\\" viewBox=\\\"0 0 16 16\\\" version=\\\"1.1\\\" width=\\\"16\\\" height=\\\"16\\\" aria-hidden=\\\"true\\\"><path fill-rule=\\\"evenodd\\\" d=\\\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\\\"></path></svg></a>공공데이터</h2>\\n<ul dir=\\\"auto\\\">\\n<li>서울특별시 버스정류장 위치 정보\\n<ul dir=\\\"auto\\\">\\n<li>웹앱 서비스 제공에 사용되는 데이터</li>\\n</ul>\\n</li>\\n<li>서울시 버스노선별 정류장별 시간대별 승하차 인원 정보\\n<ul dir=\\\"auto\\\">\\n<li>기대효과 도출에 사용되는 데이터</li>\\n</ul>\\n</li>\\n</ul>\\n<h2 dir=\\\"auto\\\"><a id=\\\"user-content-buxi-server\\\" class=\\\"anchor\\\" aria-hidden=\\\"true\\\" href=\\\"#buxi-server\\\"><svg class=\\\"octicon octicon-link\\\" viewBox=\\\"0 0 16 16\\\" version=\\\"1.1\\\" width=\\\"16\\\" height=\\\"16\\\" aria-hidden=\\\"true\\\"><path fill-rule=\\\"evenodd\\\" d=\\\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\\\"></path></svg></a>Buxi Server</h2>\\n<p dir=\\\"auto\\\"><a href=\\\"https://github.com/kalgory/Web_Buxi-Server\\\">Github Server Repository</a></p>\\n<h2 dir=\\\"auto\\\"><a id=\\\"user-content-user-flow\\\" class=\\\"anchor\\\" aria-hidden=\\\"true\\\" href=\\\"#user-flow\\\"><svg class=\\\"octicon octicon-link\\\" viewBox=\\\"0 0 16 16\\\" version=\\\"1.1\\\" width=\\\"16\\\" height=\\\"16\\\" aria-hidden=\\\"true\\\"><path fill-rule=\\\"evenodd\\\" d=\\\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\\\"></path></svg></a>User Flow</h2>\\n<div align=\\\"center\\\" dir=\\\"auto\\\">\\n    <a target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\" href=\\\"https://user-images.githubusercontent.com/64261939/119088107-1900f380-ba43-11eb-9227-2127a2985516.png\\\"><img src=\\\"https://user-images.githubusercontent.com/64261939/119088107-1900f380-ba43-11eb-9227-2127a2985516.png\\\" style=\\\"max-width: 100%;\\\"></a>\\n</div>\\n<h2 dir=\\\"auto\\\"><a id=\\\"user-content-시연\\\" class=\\\"anchor\\\" aria-hidden=\\\"true\\\" href=\\\"#시연\\\"><svg class=\\\"octicon octicon-link\\\" viewBox=\\\"0 0 16 16\\\" version=\\\"1.1\\\" width=\\\"16\\\" height=\\\"16\\\" aria-hidden=\\\"true\\\"><path fill-rule=\\\"evenodd\\\" d=\\\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\\\"></path></svg></a>시연</h2>\\n<div align=\\\"center\\\" dir=\\\"auto\\\">\\n    <a target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\" href=\\\"https://user-images.githubusercontent.com/74395748/139580393-b0bfcc0c-20db-41ae-b8fc-9afe91aa9ed7.png\\\"><img src=\\\"https://user-images.githubusercontent.com/74395748/139580393-b0bfcc0c-20db-41ae-b8fc-9afe91aa9ed7.png\\\" style=\\\"max-width: 100%;\\\"></a>\\n</div>\\n<h2 dir=\\\"auto\\\"><a id=\\\"user-content-기대효과\\\" class=\\\"anchor\\\" aria-hidden=\\\"true\\\" href=\\\"#기대효과\\\"><svg class=\\\"octicon octicon-link\\\" viewBox=\\\"0 0 16 16\\\" version=\\\"1.1\\\" width=\\\"16\\\" height=\\\"16\\\" aria-hidden=\\\"true\\\"><path fill-rule=\\\"evenodd\\\" d=\\\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\\\"></path></svg></a>기대효과</h2>\\n<div align=\\\"center\\\" dir=\\\"auto\\\">\\n    <a target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\" href=\\\"https://user-images.githubusercontent.com/74395748/139580421-52a703d0-b127-4ffc-9f58-2735c335891d.png\\\"><img src=\\\"https://user-images.githubusercontent.com/74395748/139580421-52a703d0-b127-4ffc-9f58-2735c335891d.png\\\" style=\\\"max-width: 100%;\\\"></a>\\n</div>\\n<div align=\\\"center\\\" dir=\\\"auto\\\">\\n    <a target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\" href=\\\"https://user-images.githubusercontent.com/74395748/139580397-a6321de5-646d-4564-b498-203f0c42cbe8.png\\\"><img src=\\\"https://user-images.githubusercontent.com/74395748/139580397-a6321de5-646d-4564-b498-203f0c42cbe8.png\\\" style=\\\"max-width: 100%;\\\"></a>\\n</div>\\n</article></div>\",\r\n        \"link\": \"https://github.com/dmin0211/Web_Buxi\",\r\n        \"info\": {\r\n            \"starCount\": 0,\r\n            \"forkCount\": 0,\r\n            \"language\": {\r\n                \"Vue\": 80.58,\r\n                \"JavaScript\": 17.01,\r\n                \"HTML\": 2.4\r\n            }\r\n        },\r\n        \"identity\": \"dmin0211\",\r\n        \"target\": \"Web_Buxi\"\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/posts/"},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": {\n        \"_id\": \"619b81ad89c4ba77b29096c3\",\n        \"title\": \"WEB26-COKIRI\",\n        \"content\": \"깃허브 연동입니다\",\n        \"tags\": [],\n        \"type\": \"external\",\n        \"external\": {\n            \"content\": \"<div align=\\\"center\\\">\\n    <a href=\\\"https://github.com/boostcampwm-2021/WEB26-COKIRI\\\">\\n    <img width=\\\"500\\\" src=\\\"https://user-images.githubusercontent.com/74395748/139043672-3e2cd88c-35e4-4d5f-8ca1-99766b1e4496.png\\\" />\\n    </a>\\n</div>\\n\\n\\n<p align=\\\"center\\\">\\n    <a href=\\\"/\\\"><img src=\\\"https://img.shields.io/badge/node-16.13.0-9181d6?logo=node.js\\\" alt=\\\"\\\"></a>\\n    <a href=\\\"/\\\"><img src=\\\"https://img.shields.io/badge/npm-8.1.0-9181D6?logo=npm\\\" alt=\\\"\\\"></a>\\n    <a href=\\\"/\\\"><img src=\\\"https://img.shields.io/badge/express-4.17.1-9181D6?logo=express\\\" alt=\\\"\\\"></a>\\n    <a href=\\\"/\\\"><img src=\\\"https://img.shields.io/badge/ubuntu-18.04-9181D6?logo=ubuntu\\\" alt=\\\"\\\"></a>\\n    <a href=\\\"/\\\"><img src=\\\"https://img.shields.io/badge/react-17.0.2-9181D6?logo=react\\\" alt=\\\"\\\"></a>\\n    <br>\\n    <a href=\\\"/\\\"><img src=\\\"https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2Fboostcampwm-2021%2FWEB26-COKIRI&count_bg=%239181D6&title_bg=%23555555&icon=&icon_color=%239181D6&title=&edge_flat=false\\\"/></a>\\n</p>\\n\\n<div align=\\\"center\\\">\\n<h2>\\n개발, 이제 관심을 받다.\\n</h2>\\n\\n<p>일상을 쉽게 공유하지 못하는 개발자를 위한 SNS.<br>\\n몇번의 클릭으로 다른 개발자의 흔적을 볼 수 있다.<br>\\n그리고<br>\\n코쿠(COCOO)는 개발자의 흩어진 노력을 모아준다.</p>\\n\\n</div>\\n\\n## 💧 링크\\n\\n- [배포](/)\\n- [데모 영상](/)\\n- [노션](https://pool-storm-1a3.notion.site/b1de384e2f8c47948ee4b347bda6de04)\\n- [디자인](https://miro.com/app/board/o9J_lnmq-7Y=/?invite_link_id=740345289660)\\n- [기획](https://miro.com/app/board/o9J_lnnTacc=/?invite_link_id=874331551230)\\n- [백로그](https://docs.google.com/spreadsheets/d/14WwTBta7pvPAq2TPi0Rga9ThRRph-Lt7dCHPDHVWlRo/edit?usp=sharing)\\n\\n\\n\\n## ❄️ 기능\\n\\n\\n## 아키텍쳐\\n![아키텍쳐 jpg](https://user-images.githubusercontent.com/34956768/139275197-360f1438-511c-428f-93b3-589ea978de29.jpg)\\n\\n## 스택\\n![스택1](https://user-images.githubusercontent.com/34956768/139271396-dd0cda8b-b31a-4690-a8dd-0565fe3ec2f6.jpg)\\n\\n\\n## 🧊 개발자\\n\\n|     정현민    |     유정한    |    김동민   |     한범석    |\\n| :---------: | :---------: | :--------: | :---------: |\\n|  **티라노**   |   **먼치킨**  |  **고라니** |  **타이거**   |\\n| @hyunmindev | @youjeonghan | @dmin0211 | @beomseok37 |\\n| <img width=200 src=\\\"https://user-images.githubusercontent.com/34956768/139091226-e7e7aa3b-785e-4fce-bec2-7b0178820aa5.png\\\"> | <img width=200 src=\\\"https://user-images.githubusercontent.com/34956768/139091573-17ca9a01-3a0a-448f-8203-faedc34aa2b6.png\\\"> | <img width=200 src=\\\"https://user-images.githubusercontent.com/34956768/139091567-646b32b0-a856-4e6f-9e18-3c62039f99fe.png\\\">| <img width=200 src=\\\"https://user-images.githubusercontent.com/34956768/139091533-cc71d3ea-4c68-4234-bba2-ec83ca74d94a.png\\\"> |\",\n            \"link\": \"https://github.com/youjeonghan/WEB26-COKIRI\",\n            \"info\": {\n                \"starCount\": 0,\n                \"forkCount\": 0,\n                \"language\": {\n                    \"TypeScript\": 89.04,\n                    \"CSS\": 8.3,\n                    \"JavaScript\": 2.66\n                }\n            },\n            \"type\": \"repository\",\n            \"identity\": \"youjeonghan\",\n            \"target\": \"WEB26-COKIRI\"\n        },\n        \"createdAt\": \"2021-11-22T11:40:29.792Z\",\n        \"updatedAt\": \"2021-11-22T11:40:29.792Z\",\n        \"user\": {\n            \"_id\": \"6195daa5856537d371ba17f7\",\n            \"username\": \"codingegg\",\n            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n        },\n        \"comments\": [],\n        \"likes\": [],\n        \"images\": []\n    }\n}"}],"_postman_id":"6000430e-6d54-4355-bdcd-c70c859df1b8"},{"name":"GitHub Repository 리스트","id":"28e2978d-cc3e-408b-ab63-fad3ace9588c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[],"url":"http://localhost:3001/v1/users/:user_id/repositories","urlObject":{"path":["v1","users",":user_id","repositories"],"host":["http://localhost:3001"],"query":[],"variable":[{"description":{"content":"<p>유저 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"6195daa5856537d371ba17f7","key":"user_id"}]}},"response":[{"id":"f842eb19-f9e2-475b-b0f3-05cef7b990f8","name":"GitHub Repository 리스트","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/users/:user_id/repositories","host":["http://localhost:3001"],"path":["v1","users",":user_id","repositories"],"variable":[{"key":"user_id","value":"6195daa5856537d371ba17f7","description":"유저 고유 식별자"}]}},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\r\n    \"code\": \"Success\",\r\n    \"data\": [\r\n        {\r\n            \"name\": \"Android_Study\",\r\n            \"url\": \"https://github.com/youjeonghan/Android_Study\"\r\n        },\r\n        {\r\n            \"name\": \"Android_TodoList\",\r\n            \"url\": \"https://github.com/youjeonghan/Android_TodoList\"\r\n        },\r\n        {\r\n            \"name\": \"ATM_Controller\",\r\n            \"url\": \"https://github.com/youjeonghan/ATM_Controller\"\r\n        },\r\n        {\r\n            \"name\": \"BackJoon_Algorithm\",\r\n            \"url\": \"https://github.com/youjeonghan/BackJoon_Algorithm\"\r\n        },\r\n        {\r\n            \"name\": \"CodeUp_Basic100\",\r\n            \"url\": \"https://github.com/youjeonghan/CodeUp_Basic100\"\r\n        },\r\n        {\r\n            \"name\": \"Crawling_Study\",\r\n            \"url\": \"https://github.com/youjeonghan/Crawling_Study\"\r\n        },\r\n        {\r\n            \"name\": \"C_sharp_progaming\",\r\n            \"url\": \"https://github.com/youjeonghan/C_sharp_progaming\"\r\n        },\r\n        {\r\n            \"name\": \"Data_Analysis\",\r\n            \"url\": \"https://github.com/youjeonghan/Data_Analysis\"\r\n        },\r\n        {\r\n            \"name\": \"Django_Study\",\r\n            \"url\": \"https://github.com/youjeonghan/Django_Study\"\r\n        },\r\n        {\r\n            \"name\": \"Flask_Study\",\r\n            \"url\": \"https://github.com/youjeonghan/Flask_Study\"\r\n        },\r\n        {\r\n            \"name\": \"Flutter_GetX_Study\",\r\n            \"url\": \"https://github.com/youjeonghan/Flutter_GetX_Study\"\r\n        },\r\n        {\r\n            \"name\": \"Flutter_Study\",\r\n            \"url\": \"https://github.com/youjeonghan/Flutter_Study\"\r\n        },\r\n        {\r\n            \"name\": \"FlyingPenguin\",\r\n            \"url\": \"https://github.com/youjeonghan/FlyingPenguin\"\r\n        },\r\n        {\r\n            \"name\": \"Front_End_Study\",\r\n            \"url\": \"https://github.com/youjeonghan/Front_End_Study\"\r\n        },\r\n        {\r\n            \"name\": \"Full_Stack_Project\",\r\n            \"url\": \"https://github.com/youjeonghan/Full_Stack_Project\"\r\n        },\r\n        {\r\n            \"name\": \"GazeTracking\",\r\n            \"url\": \"https://github.com/youjeonghan/GazeTracking\"\r\n        },\r\n        {\r\n            \"name\": \"getx_pattern\",\r\n            \"url\": \"https://github.com/youjeonghan/getx_pattern\"\r\n        },\r\n        {\r\n            \"name\": \"IMFlask\",\r\n            \"url\": \"https://github.com/youjeonghan/IMFlask\"\r\n        },\r\n        {\r\n            \"name\": \"LTV_Prediction_Service\",\r\n            \"url\": \"https://github.com/youjeonghan/LTV_Prediction_Service\"\r\n        },\r\n        {\r\n            \"name\": \"Node.js_Study\",\r\n            \"url\": \"https://github.com/youjeonghan/Node.js_Study\"\r\n        },\r\n        {\r\n            \"name\": \"nodebestpractices\",\r\n            \"url\": \"https://github.com/youjeonghan/nodebestpractices\"\r\n        },\r\n        {\r\n            \"name\": \"Programmers_Algorithm\",\r\n            \"url\": \"https://github.com/youjeonghan/Programmers_Algorithm\"\r\n        },\r\n        {\r\n            \"name\": \"pytorch_study_iml\",\r\n            \"url\": \"https://github.com/youjeonghan/pytorch_study_iml\"\r\n        },\r\n        {\r\n            \"name\": \"React_Study\",\r\n            \"url\": \"https://github.com/youjeonghan/React_Study\"\r\n        },\r\n        {\r\n            \"name\": \"Smart_Bell\",\r\n            \"url\": \"https://github.com/youjeonghan/Smart_Bell\"\r\n        },\r\n        {\r\n            \"name\": \"Stop_Egg\",\r\n            \"url\": \"https://github.com/youjeonghan/Stop_Egg\"\r\n        },\r\n        {\r\n            \"name\": \"Test_Supervisor_AI\",\r\n            \"url\": \"https://github.com/youjeonghan/Test_Supervisor_AI\"\r\n        },\r\n        {\r\n            \"name\": \"Tetris\",\r\n            \"url\": \"https://github.com/youjeonghan/Tetris\"\r\n        },\r\n        {\r\n            \"name\": \"toss_clone\",\r\n            \"url\": \"https://github.com/youjeonghan/toss_clone\"\r\n        },\r\n        {\r\n            \"name\": \"Vanilla_Javascript_Web_Component\",\r\n            \"url\": \"https://github.com/youjeonghan/Vanilla_Javascript_Web_Component\"\r\n        }\r\n    ]\r\n}"}],"_postman_id":"28e2978d-cc3e-408b-ab63-fad3ace9588c"},{"name":"GitHub Repository 정보","id":"8e4ea028-54a8-4bcd-aa6f-4b4504ca8dc5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[],"url":"http://localhost:3001/v1/users/:user_id/repositories/:repo_name","urlObject":{"path":["v1","users",":user_id","repositories",":repo_name"],"host":["http://localhost:3001"],"query":[],"variable":[{"type":"any","value":"6195daa5856537d371ba17f7","key":"user_id"},{"type":"any","value":"Programmers_Algorithm","key":"repo_name"}]}},"response":[{"id":"0a858a4d-8394-4466-a081-5643059d7edf","name":"GitHub Repository 정보","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/users/:user_id/repositories/:repo_name","host":["http://localhost:3001"],"path":["v1","users",":user_id","repositories",":repo_name"],"variable":[{"key":"user_id","value":"6195daa5856537d371ba17f7"},{"key":"repo_name","value":"Programmers_Algorithm"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": {\n        \"title\": \"Programmers_Algorithm\",\n        \"type\": \"repository\",\n        \"content\": \"<div id=\\\"readme\\\" class=\\\"md\\\" data-path=\\\"README.md\\\"><article class=\\\"markdown-body entry-content container-lg\\\" itemprop=\\\"text\\\"><h1 dir=\\\"auto\\\"><a id=\\\"user-content-programmers_algorithm\\\" class=\\\"anchor\\\" aria-hidden=\\\"true\\\" href=\\\"#programmers_algorithm\\\"><svg class=\\\"octicon octicon-link\\\" viewBox=\\\"0 0 16 16\\\" version=\\\"1.1\\\" width=\\\"16\\\" height=\\\"16\\\" aria-hidden=\\\"true\\\"><path fill-rule=\\\"evenodd\\\" d=\\\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\\\"></path></svg></a>Programmers_Algorithm</h1>\\n<p dir=\\\"auto\\\">프로그래머스 문제 풀기</p>\\n</article></div>\",\n        \"link\": \"https://github.com/youjeonghan/Programmers_Algorithm\",\n        \"info\": {\n            \"starCount\": 1,\n            \"forkCount\": 0,\n            \"language\": {\n                \"Python\": 100\n            }\n        },\n        \"identity\": \"youjeonghan\",\n        \"target\": \"Programmers_Algorithm\"\n    }\n}"}],"_postman_id":"8e4ea028-54a8-4bcd-aa6f-4b4504ca8dc5"},{"name":"블로그 글 리스트","id":"c6f47cb3-9302-4db3-a1ca-7ff51879a786","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[],"url":"http://localhost:3001/v1/users/:user_id/blogs","urlObject":{"path":["v1","users",":user_id","blogs"],"host":["http://localhost:3001"],"query":[],"variable":[{"description":{"content":"<p>유저 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"6194d078928b431f065e0997","key":"user_id"}]}},"response":[{"id":"4b62b841-6a86-4c87-a0b8-087f21d7cc62","name":"블로그 글 리스트","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/users/:user_id/blogs","host":["http://localhost:3001"],"path":["v1","users",":user_id","blogs"],"variable":[{"key":"user_id","value":"6194d078928b431f065e0997","description":"유저 고유 식별자"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": [\n        {\n            \"postID\": \"14\",\n            \"postTitle\": \"양방향 통신(polling, long polling, websocket)\",\n            \"type\": \"tistory\",\n            \"identity\": \"dongmin-tech\"\n        },\n        {\n            \"postID\": \"13\",\n            \"postTitle\": \"[Node.js] SSH Tunneling 을 통한 ORM 생성하기\",\n            \"type\": \"tistory\",\n            \"identity\": \"dongmin-tech\"\n        },\n        {\n            \"postID\": \"12\",\n            \"postTitle\": \"[Javascript] this?\",\n            \"type\": \"tistory\",\n            \"identity\": \"dongmin-tech\"\n        },\n        {\n            \"postID\": \"11\",\n            \"postTitle\": \"[Javascript] Scope\",\n            \"type\": \"tistory\",\n            \"identity\": \"dongmin-tech\"\n        },\n        {\n            \"postID\": \"10\",\n            \"postTitle\": \"Atomic Design\",\n            \"type\": \"tistory\",\n            \"identity\": \"dongmin-tech\"\n        },\n        {\n            \"postID\": \"9\",\n            \"postTitle\": \"[React]Frontend 설계 5단계\",\n            \"type\": \"tistory\",\n            \"identity\": \"dongmin-tech\"\n        },\n        {\n            \"postID\": \"8\",\n            \"postTitle\": \"2021 부스트캠프(Web) Membership 1주차 정리\",\n            \"type\": \"tistory\",\n            \"identity\": \"dongmin-tech\"\n        },\n        {\n            \"postID\": \"7\",\n            \"postTitle\": \"2021 부스트캠프(Web) Membership 합격\",\n            \"type\": \"tistory\",\n            \"identity\": \"dongmin-tech\"\n        },\n        {\n            \"postID\": \"6\",\n            \"postTitle\": \"2021 부스트캠프(Web) Challenge 4주차 수료 후기\",\n            \"type\": \"tistory\",\n            \"identity\": \"dongmin-tech\"\n        },\n        {\n            \"postID\": \"5\",\n            \"postTitle\": \"2021 부스트캠프(Web) Challenge 3주차 후기\",\n            \"type\": \"tistory\",\n            \"identity\": \"dongmin-tech\"\n        },\n        {\n            \"postID\": \"3\",\n            \"postTitle\": \"2021 부스트캠프(Web) Challenge 2주차 후기\",\n            \"type\": \"tistory\",\n            \"identity\": \"dongmin-tech\"\n        },\n        {\n            \"postID\": \"2\",\n            \"postTitle\": \"2021 부스트캠프(Web) Challenge 1주차 후기\",\n            \"type\": \"tistory\",\n            \"identity\": \"dongmin-tech\"\n        },\n        {\n            \"postID\": \"1\",\n            \"postTitle\": \"환영합니다!\",\n            \"type\": \"tistory\",\n            \"identity\": \"dongmin-tech\"\n        }\n    ]\n}"}],"_postman_id":"c6f47cb3-9302-4db3-a1ca-7ff51879a786"},{"name":"백준 문제 리스트 검색","id":"507d6175-d0d1-4859-b063-8578c4170f4b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/problems?query=터렛","urlObject":{"path":["v1","problems"],"host":["http://localhost:3001"],"query":[{"key":"query","value":"터렛"}],"variable":[]}},"response":[{"id":"d2b19d01-5da6-4f30-bd3d-fc93fd43e7c1","name":"백준 문제 리스트 검색","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/problems?query=터렛","host":["http://localhost:3001"],"path":["v1","problems"],"query":[{"key":"query","value":"터렛"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": [\n        {\n            \"id\": 1002,\n            \"title\": \"터렛\"\n        },\n        {\n            \"id\": 18825,\n            \"title\": \"눈치게임 A+B! A-B! A+B! 터렛! A+B! 피보나치 함수! A+B! A-B! A+B! 어린 왕자! A+B! ACM Craft! A+B! A-B! A+B! 습격자 초라기! A+B! 벡터 매칭! A+B! A-B! A+B! A/B! A+B! 터렛! A+B! A-B! A+B! 분산처리! A+B! A+B! 마셔라! 마셔라 마셔라! 마셔라 틀이 들어간다!\"\n        }\n    ]\n}"}],"_postman_id":"507d6175-d0d1-4859-b063-8578c4170f4b"},{"name":"Tistory 본문 가져오기","id":"1a176c43-940c-4270-9b00-1b87a565f946","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[],"url":"http://localhost:3001/v1/users/:user_id/tistory/:identity/posts/:post_id","urlObject":{"path":["v1","users",":user_id","tistory",":identity","posts",":post_id"],"host":["http://localhost:3001"],"query":[],"variable":[{"type":"any","value":"6194d078928b431f065e0997","key":"user_id"},{"type":"any","value":"dongmin-tech","key":"identity"},{"type":"any","value":"14","key":"post_id"}]}},"response":[{"id":"d753301c-d353-45b9-8ace-76211366ab50","name":"Tistory 본문 가져오기","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/users/:user_id/tistory/:identity/posts/:post_id","host":["http://localhost:3001"],"path":["v1","users",":user_id","tistory",":identity","posts",":post_id"],"variable":[{"key":"user_id","value":"6194d078928b431f065e0997"},{"key":"identity","value":"dongmin-tech"},{"key":"post_id","value":"14"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": {\n        \"title\": \"양방향 통신(polling, long polling, websocket)\",\n        \"type\": \"tistory\",\n        \"content\": \"<h4 data-ke-size=\\\"size20\\\"><b>Polling</b></h4>\\n<p data-ke-size=\\\"size16\\\">Polling 방식은 간단하게 특정 시간마다 클라이언트에서 서버로 요청을 하며 응답을 통해 데이터를 갱신합니다. 즉, 아무런 server의 event 가 발생하지 않더라도 모든 클라이언트는 지속적으로 server에게 XMLHttpRequest를 보내게 됩니다. 또한 실시간으로 메시지 전달이 필요한 경우 요청을 보내는 주기가 짧아질 것입니다. 이는 서버의 불필요한 트래픽이 발생합니다.</p>\\n<p data-ke-size=\\\"size16\\\">매 주기마다 서버는 Request의 Header parser 하며, query를 통해 새로운 데이터에 대한 응답을 생성해서 보낼 것입니다. 그 후 서버는 모든 리소스에 대한 정리 작업도 진행해야 할 것입니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<h4 data-ke-size=\\\"size20\\\"><b>Long Polling</b></h4>\\n<p data-ke-size=\\\"size16\\\">기존 양방향 통신으로 사용되는 polling 방식보다 효율적인 방식의 기법입니다.</p>\\n<p data-ke-size=\\\"size16\\\">서버에 주기적으로 요청을 보내는 방식이 아닌 서버에서 클라이언트의 연결을 Keep Alive 헤더를 통해 유지하는 방식입니다.</p>\\n<p data-ke-size=\\\"size16\\\"><b>동작 방식</b></p>\\n<p><figure class='imageblock alignLeft' data-origin-width=\\\"1132\\\" data-origin-height=\\\"896\\\" data-filename=\\\"longpolling.png\\\" width=\\\"394\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"><span data-url='https://blog.kakaocdn.net/dn/wayei/btriDxzznNK/JtMHNogKkthQ3z7sCUFI80/img.png' data-lightbox='lightbox' data-alt=''><img src='https://blog.kakaocdn.net/dn/wayei/btriDxzznNK/JtMHNogKkthQ3z7sCUFI80/img.png' srcset='https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwayei%2FbtriDxzznNK%2FJtMHNogKkthQ3z7sCUFI80%2Fimg.png' data-origin-width=\\\"1132\\\" data-origin-height=\\\"896\\\" data-filename=\\\"longpolling.png\\\" width=\\\"394\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"></span></figure></p>\\n<ul style=\\\"list-style-type: disc;\\\" data-ke-list-type=\\\"disc\\\">\\n<li>우선 Client는 Server로 Keep Alive 헤더를 포함한 GET request를 보내며 응답을 받을 때까지 연결을 유지합니다.</li>\\n<li>Server의 Event 가 발생 시 Client의 GET request에 대해서 응답을 보내게 됩니다.</li>\\n<li>응답을 받은 Client는 다시 동일한 GET request를 보내며 다음 응답을 기다립니다.</li>\\n</ul>\\n<p data-ke-size=\\\"size16\\\">확실히 Server Event 발생 시에만 XMLHttpRequest 가 발생하며 불필요한 트래픽이 발생하지 않으며 실시간 메시지 전달이 가능합니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<p data-ke-size=\\\"size16\\\"><b>단점</b></p>\\n<p data-ke-size=\\\"size16\\\">하지만 주기적으로 데이터들을 한 번에 보내는 polling과 달리 Server Event 시마다 Server의 응답, Client의 GET 요청이 발생합니다. 당연히 서버는 동일하게 HTTP request의 header parser 작업과 응답 객체의 생성 작업을 거칩니다. 즉, 실시간으로 잦은 서버 상태 변경의 요청 즉 caching 되지 않는 request 통신이 이루어지는 경우 polling 보다 더 많은 트래픽이 발생할 수 있습니다.</p>\\n<p data-ke-size=\\\"size16\\\">추가적으로 relative message order의 문제점도 존재합니다.</p>\\n<p><figure class='imageblock alignLeft' data-origin-width=\\\"1024\\\" data-origin-height=\\\"784\\\" data-filename=\\\"cons1.png\\\" width=\\\"457\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"><span data-url='https://blog.kakaocdn.net/dn/dejRWc/btriDxNa1dm/nVRQa4jWRk2cAKRSs4sjZ0/img.png' data-lightbox='lightbox' data-alt=''><img src='https://blog.kakaocdn.net/dn/dejRWc/btriDxNa1dm/nVRQa4jWRk2cAKRSs4sjZ0/img.png' srcset='https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdejRWc%2FbtriDxNa1dm%2FnVRQa4jWRk2cAKRSs4sjZ0%2Fimg.png' data-origin-width=\\\"1024\\\" data-origin-height=\\\"784\\\" data-filename=\\\"cons1.png\\\" width=\\\"457\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"></span></figure></p>\\n<p data-ke-size=\\\"size16\\\">동일한 서버 리소스를 사용하는 클라이언트가 다중 탭으로 동일한 요청을 보내고 해당 요청에 대해서 서버가 Database 작업을 수행한다면 중복 데이터가 2번 저장 혹은 갱신되게 됩니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<p><figure class='imageblock alignLeft' data-origin-width=\\\"1046\\\" data-origin-height=\\\"810\\\" data-filename=\\\"cons2.png\\\" width=\\\"452\\\" height=\\\"350\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"><span data-url='https://blog.kakaocdn.net/dn/DV44W/btriHBVwqOO/wEVKOV8Z9ocXOEgwMWKhK0/img.png' data-lightbox='lightbox' data-alt=''><img src='https://blog.kakaocdn.net/dn/DV44W/btriHBVwqOO/wEVKOV8Z9ocXOEgwMWKhK0/img.png' srcset='https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDV44W%2FbtriHBVwqOO%2FwEVKOV8Z9ocXOEgwMWKhK0%2Fimg.png' data-origin-width=\\\"1046\\\" data-origin-height=\\\"810\\\" data-filename=\\\"cons2.png\\\" width=\\\"452\\\" height=\\\"350\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"></span></figure></p>\\n<p data-ke-size=\\\"size16\\\">또한 서버의 구현에 따라 클라이언트 인스턴스가 메시지 수신을 전혀 하지 못하는 경우가 있습니다. Server event 가 발생하여 응답을 보냈으나 네트워크, 브라우저의 문제 등의 경우로 누락된 경우 Client 가 정상적으로 응답받은 것을 확인하지 못하게 될 것입니다. Client 역시 응답이 중간에 누락된 것을 확인하지 못하고 더 이상 server 와의 통신이 이루어질 수 없을 것입니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<h4 data-ke-size=\\\"size20\\\"><b>Websocket</b></h4>\\n<p data-ke-size=\\\"size16\\\"><b>동작 방식</b></p>\\n<p data-ke-size=\\\"size16\\\">websocket 은 기존의 http protocol 요청을 사용한 양방향 통신(클라이언트가 요청이 없으면 서버에게 응답을 받을 수 없는 구조)을 문제를 해결하기 위해 나온 transport protocol입니다.</p>\\n<p data-ke-size=\\\"size16\\\">처음 서버와 클라이언트 간 http protocol 요청을 통해 handshake 과정을 거칩니다. 웹소켓 연결이 가능함을 handshake 과정에서 판단되면 서버와 클라이언트는 ws protocol로 데이터를 전송할 수 있습니다. 이때 데이터 전송에서 기존 http protocol 양방향 통신 방식의 문제 중 하나인 request header 정보로 인한 불필요한 overhead 가 적습니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<p data-ke-size=\\\"size16\\\"><b>단점</b></p>\\n<ul style=\\\"list-style-type: disc;\\\" data-ke-list-type=\\\"disc\\\">\\n<li>우선 2011 년 이전의 브라우저는 지원하지 않는 단점이 있습니다.</li>\\n<li>stateful protocol 이므로 연결의 종료에 대해서 서버에서 적절한 대처가 있어야 합니다.</li>\\n<li>소켓을 연결을 유지하는 것만으로 비용이 듭니다. 실시간으로 통신을 유지해야 하는 경우가 아니라면 http protocol 방식이 유용할 것입니다.</li>\\n</ul>\\n<h4 data-ke-size=\\\"size20\\\"><a href=\\\"http://Socket.io\\\">Socket.io</a></h4>\\n<p data-ke-size=\\\"size16\\\">websocket의 추가적인 단점은 개발의 피로도입니다. 이러한 피로도를 줄여주는 라이브러리가 <a href=\\\"http://socket.io\\\">Socket.io 입니다.</a> <a href=\\\"http://Socket.io\\\">Socket.io</a> <a href=\\\"%5B%3Chttps://socket.io/docs/v3/how-it-works/%3E%5D(%3Chttps://socket.io/docs/v3/how-it-works/%3E)\\\">How it works</a> 글을 읽어보면 기본 Client와 Server의 연결 방식의 설정은 long polling 방식입니다. 그러한 이유는 Websocket 방식은 브라우저 버전, 프락시, 개인 방화벽, 바이러스 백신 소프트웨어로 인해 항상 연결이 가능한 것은 아닙니다. 그 후 Websocket upgrade 가 가능하다면 Websocket 방식을 사용합니다.</p>\\n<p data-ke-size=\\\"size16\\\">이 글의 내용을 확인해 봤을 때 <a href=\\\"http://Socket.io\\\">Socket.io</a> 라이브러리는 Websocket 방식의 fallback으로 long polling 방식을 사용하고 있습니다. 하지만 long polling 방식은 위에서 확인한 것과 같이 단점이 존재하며 그것은 Websocket 방식 역시 마찬가지입니다.</p>\\n<p data-ke-size=\\\"size16\\\">마지막으로 필자의 생각입니다. 아직 각 양방향 통신의 단점을 완전히 해결할 수 있는 방식이 나오지 않았고 가능한지도 짐작할 수 없습니다. 현재로서는 구현하고 있는 서비스에 대한 알맞은 통신 방식을 선정하여 <a href=\\\"http://Socket.io\\\">Socket.io</a> fallback 설정을 하는 것을 생각해봐야 할 것 같습니다.</p>\",\n        \"link\": \"https://blog.dongmin.dev/14\",\n        \"identity\": \"dongmin-tech\",\n        \"target\": \"14\"\n    }\n}"}],"_postman_id":"1a176c43-940c-4270-9b00-1b87a565f946"},{"name":"Tistory 본문 갱신","id":"ea0b5c21-8e08-4bc9-86d6-e14ce7ddb1c0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"type\": \"tistory\",\n    \"userID\": \"6194d078928b431f065e0997\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/posts/:postId/tistory","urlObject":{"path":["v1","posts",":postId","tistory"],"host":["http://localhost:3001"],"query":[],"variable":[{"type":"any","value":"6197c543705169a1ca1aa9ef","key":"postId"}]}},"response":[{"id":"531ae1b4-9bdc-4e46-9c2e-d0e66867ea2a","name":"Tistory 본문 갱신","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"type\": \"tistory\",\n    \"userID\": \"6194d078928b431f065e0997\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:3001/v1/posts/:postId/tistory","host":["http://localhost:3001"],"path":["v1","posts",":postId","tistory"],"variable":[{"key":"postId","value":"6197c543705169a1ca1aa9ef"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": {\n        \"_id\": \"6197c543705169a1ca1aa9ef\",\n        \"title\": \"양방향 통신(polling, long polling, websocket)\",\n        \"content\": \"Tistory 글을 연동해보았어요!!\",\n        \"tags\": [],\n        \"type\": \"blog\",\n        \"external\": {\n            \"type\": \"tistory\",\n            \"content\": \"<h4 data-ke-size=\\\"size20\\\"><b>Polling</b></h4>\\n<p data-ke-size=\\\"size16\\\">Polling 방식은 간단하게 특정 시간마다 클라이언트에서 서버로 요청을 하며 응답을 통해 데이터를 갱신합니다. 즉, 아무런 server의 event 가 발생하지 않더라도 모든 클라이언트는 지속적으로 server에게 XMLHttpRequest를 보내게 됩니다. 또한 실시간으로 메시지 전달이 필요한 경우 요청을 보내는 주기가 짧아질 것입니다. 이는 서버의 불필요한 트래픽이 발생합니다.</p>\\n<p data-ke-size=\\\"size16\\\">매 주기마다 서버는 Request의 Header parser 하며, query를 통해 새로운 데이터에 대한 응답을 생성해서 보낼 것입니다. 그 후 서버는 모든 리소스에 대한 정리 작업도 진행해야 할 것입니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<h4 data-ke-size=\\\"size20\\\"><b>Long Polling</b></h4>\\n<p data-ke-size=\\\"size16\\\">기존 양방향 통신으로 사용되는 polling 방식보다 효율적인 방식의 기법입니다.</p>\\n<p data-ke-size=\\\"size16\\\">서버에 주기적으로 요청을 보내는 방식이 아닌 서버에서 클라이언트의 연결을 Keep Alive 헤더를 통해 유지하는 방식입니다.</p>\\n<p data-ke-size=\\\"size16\\\"><b>동작 방식</b></p>\\n<p><figure class='imageblock alignLeft' data-origin-width=\\\"1132\\\" data-origin-height=\\\"896\\\" data-filename=\\\"longpolling.png\\\" width=\\\"394\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"><span data-url='https://blog.kakaocdn.net/dn/wayei/btriDxzznNK/JtMHNogKkthQ3z7sCUFI80/img.png' data-lightbox='lightbox' data-alt=''><img src='https://blog.kakaocdn.net/dn/wayei/btriDxzznNK/JtMHNogKkthQ3z7sCUFI80/img.png' srcset='https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwayei%2FbtriDxzznNK%2FJtMHNogKkthQ3z7sCUFI80%2Fimg.png' data-origin-width=\\\"1132\\\" data-origin-height=\\\"896\\\" data-filename=\\\"longpolling.png\\\" width=\\\"394\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"></span></figure></p>\\n<ul style=\\\"list-style-type: disc;\\\" data-ke-list-type=\\\"disc\\\">\\n<li>우선 Client는 Server로 Keep Alive 헤더를 포함한 GET request를 보내며 응답을 받을 때까지 연결을 유지합니다.</li>\\n<li>Server의 Event 가 발생 시 Client의 GET request에 대해서 응답을 보내게 됩니다.</li>\\n<li>응답을 받은 Client는 다시 동일한 GET request를 보내며 다음 응답을 기다립니다.</li>\\n</ul>\\n<p data-ke-size=\\\"size16\\\">확실히 Server Event 발생 시에만 XMLHttpRequest 가 발생하며 불필요한 트래픽이 발생하지 않으며 실시간 메시지 전달이 가능합니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<p data-ke-size=\\\"size16\\\"><b>단점</b></p>\\n<p data-ke-size=\\\"size16\\\">하지만 주기적으로 데이터들을 한 번에 보내는 polling과 달리 Server Event 시마다 Server의 응답, Client의 GET 요청이 발생합니다. 당연히 서버는 동일하게 HTTP request의 header parser 작업과 응답 객체의 생성 작업을 거칩니다. 즉, 실시간으로 잦은 서버 상태 변경의 요청 즉 caching 되지 않는 request 통신이 이루어지는 경우 polling 보다 더 많은 트래픽이 발생할 수 있습니다.</p>\\n<p data-ke-size=\\\"size16\\\">추가적으로 relative message order의 문제점도 존재합니다.</p>\\n<p><figure class='imageblock alignLeft' data-origin-width=\\\"1024\\\" data-origin-height=\\\"784\\\" data-filename=\\\"cons1.png\\\" width=\\\"457\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"><span data-url='https://blog.kakaocdn.net/dn/dejRWc/btriDxNa1dm/nVRQa4jWRk2cAKRSs4sjZ0/img.png' data-lightbox='lightbox' data-alt=''><img src='https://blog.kakaocdn.net/dn/dejRWc/btriDxNa1dm/nVRQa4jWRk2cAKRSs4sjZ0/img.png' srcset='https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdejRWc%2FbtriDxNa1dm%2FnVRQa4jWRk2cAKRSs4sjZ0%2Fimg.png' data-origin-width=\\\"1024\\\" data-origin-height=\\\"784\\\" data-filename=\\\"cons1.png\\\" width=\\\"457\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"></span></figure></p>\\n<p data-ke-size=\\\"size16\\\">동일한 서버 리소스를 사용하는 클라이언트가 다중 탭으로 동일한 요청을 보내고 해당 요청에 대해서 서버가 Database 작업을 수행한다면 중복 데이터가 2번 저장 혹은 갱신되게 됩니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<p><figure class='imageblock alignLeft' data-origin-width=\\\"1046\\\" data-origin-height=\\\"810\\\" data-filename=\\\"cons2.png\\\" width=\\\"452\\\" height=\\\"350\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"><span data-url='https://blog.kakaocdn.net/dn/DV44W/btriHBVwqOO/wEVKOV8Z9ocXOEgwMWKhK0/img.png' data-lightbox='lightbox' data-alt=''><img src='https://blog.kakaocdn.net/dn/DV44W/btriHBVwqOO/wEVKOV8Z9ocXOEgwMWKhK0/img.png' srcset='https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDV44W%2FbtriHBVwqOO%2FwEVKOV8Z9ocXOEgwMWKhK0%2Fimg.png' data-origin-width=\\\"1046\\\" data-origin-height=\\\"810\\\" data-filename=\\\"cons2.png\\\" width=\\\"452\\\" height=\\\"350\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"></span></figure></p>\\n<p data-ke-size=\\\"size16\\\">또한 서버의 구현에 따라 클라이언트 인스턴스가 메시지 수신을 전혀 하지 못하는 경우가 있습니다. Server event 가 발생하여 응답을 보냈으나 네트워크, 브라우저의 문제 등의 경우로 누락된 경우 Client 가 정상적으로 응답받은 것을 확인하지 못하게 될 것입니다. Client 역시 응답이 중간에 누락된 것을 확인하지 못하고 더 이상 server 와의 통신이 이루어질 수 없을 것입니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<h4 data-ke-size=\\\"size20\\\"><b>Websocket</b></h4>\\n<p data-ke-size=\\\"size16\\\"><b>동작 방식</b></p>\\n<p data-ke-size=\\\"size16\\\">websocket 은 기존의 http protocol 요청을 사용한 양방향 통신(클라이언트가 요청이 없으면 서버에게 응답을 받을 수 없는 구조)을 문제를 해결하기 위해 나온 transport protocol입니다.</p>\\n<p data-ke-size=\\\"size16\\\">처음 서버와 클라이언트 간 http protocol 요청을 통해 handshake 과정을 거칩니다. 웹소켓 연결이 가능함을 handshake 과정에서 판단되면 서버와 클라이언트는 ws protocol로 데이터를 전송할 수 있습니다. 이때 데이터 전송에서 기존 http protocol 양방향 통신 방식의 문제 중 하나인 request header 정보로 인한 불필요한 overhead 가 적습니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<p data-ke-size=\\\"size16\\\"><b>단점</b></p>\\n<ul style=\\\"list-style-type: disc;\\\" data-ke-list-type=\\\"disc\\\">\\n<li>우선 2011 년 이전의 브라우저는 지원하지 않는 단점이 있습니다.</li>\\n<li>stateful protocol 이므로 연결의 종료에 대해서 서버에서 적절한 대처가 있어야 합니다.</li>\\n<li>소켓을 연결을 유지하는 것만으로 비용이 듭니다. 실시간으로 통신을 유지해야 하는 경우가 아니라면 http protocol 방식이 유용할 것입니다.</li>\\n</ul>\\n<h4 data-ke-size=\\\"size20\\\"><a href=\\\"http://Socket.io\\\">Socket.io</a></h4>\\n<p data-ke-size=\\\"size16\\\">websocket의 추가적인 단점은 개발의 피로도입니다. 이러한 피로도를 줄여주는 라이브러리가 <a href=\\\"http://socket.io\\\">Socket.io 입니다.</a> <a href=\\\"http://Socket.io\\\">Socket.io</a> <a href=\\\"%5B%3Chttps://socket.io/docs/v3/how-it-works/%3E%5D(%3Chttps://socket.io/docs/v3/how-it-works/%3E)\\\">How it works</a> 글을 읽어보면 기본 Client와 Server의 연결 방식의 설정은 long polling 방식입니다. 그러한 이유는 Websocket 방식은 브라우저 버전, 프락시, 개인 방화벽, 바이러스 백신 소프트웨어로 인해 항상 연결이 가능한 것은 아닙니다. 그 후 Websocket upgrade 가 가능하다면 Websocket 방식을 사용합니다.</p>\\n<p data-ke-size=\\\"size16\\\">이 글의 내용을 확인해 봤을 때 <a href=\\\"http://Socket.io\\\">Socket.io</a> 라이브러리는 Websocket 방식의 fallback으로 long polling 방식을 사용하고 있습니다. 하지만 long polling 방식은 위에서 확인한 것과 같이 단점이 존재하며 그것은 Websocket 방식 역시 마찬가지입니다.</p>\\n<p data-ke-size=\\\"size16\\\">마지막으로 필자의 생각입니다. 아직 각 양방향 통신의 단점을 완전히 해결할 수 있는 방식이 나오지 않았고 가능한지도 짐작할 수 없습니다. 현재로서는 구현하고 있는 서비스에 대한 알맞은 통신 방식을 선정하여 <a href=\\\"http://Socket.io\\\">Socket.io</a> fallback 설정을 하는 것을 생각해봐야 할 것 같습니다.</p>\",\n            \"link\": \"https://blog.dongmin.dev/14\",\n            \"identity\": \"dongmin-tech\",\n            \"target\": \"14\"\n        },\n        \"createdAt\": \"2021-11-19T15:39:47.448Z\",\n        \"updatedAt\": \"2021-11-22T07:29:41.413Z\",\n        \"user\": {\n            \"_id\": \"6194d078928b431f065e0997\",\n            \"username\": \"kdmin0211\",\n            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/YucySHrnR01g76PMCtSJ6.jpeg\"\n        },\n        \"comments\": [\n            {\n                \"_id\": \"6197cadb7e024b439b2a287a\",\n                \"content\": \"멋지네요👍\",\n                \"createdAt\": \"2021-11-19T16:03:39.643Z\",\n                \"updatedAt\": \"2021-11-19T16:03:39.643Z\",\n                \"user\": {\n                    \"_id\": \"6194d259dd93761039d5666f\",\n                    \"username\": \"beomseok37\",\n                    \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/Sk5wcHvx9-ywPmwMhScv-.jpg\"\n                },\n                \"likes\": [\n                    {\n                        \"_id\": \"619a150a252efc260508d183\",\n                        \"createdAt\": \"2021-11-21T09:44:40.033Z\",\n                        \"user\": {\n                            \"_id\": \"6194d21006d472d1f4839373\",\n                            \"username\": \"hyunmindev\",\n                            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                        }\n                    }\n                ]\n            }\n        ],\n        \"likes\": [\n            {\n                \"_id\": \"6197cadd252efc260506a481\",\n                \"createdAt\": \"2021-11-19T16:03:42.116Z\",\n                \"user\": {\n                    \"_id\": \"6194d259dd93761039d5666f\",\n                    \"username\": \"beomseok37\",\n                    \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/Sk5wcHvx9-ywPmwMhScv-.jpg\"\n                }\n            }\n        ],\n        \"images\": []\n    }\n}"}],"_postman_id":"ea0b5c21-8e08-4bc9-86d6-e14ce7ddb1c0"},{"name":"백준 문제 세부내용 가져오기","id":"249c8600-eab5-4a41-bdcc-98f6bc3a6db5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/problems/:problem_id","urlObject":{"path":["v1","problems",":problem_id"],"host":["http://localhost:3001"],"query":[],"variable":[{"type":"any","value":"1002","key":"problem_id"}]}},"response":[{"id":"406fcfad-3828-46e7-9846-49276200ece5","name":"백준 문제 세부내용 가져오기","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/problems/:problem_id","host":["http://localhost:3001"],"path":["v1","problems",":problem_id"],"variable":[{"key":"problem_id","value":"1011"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": {\n        \"title\": \"다리 놓기\",\n        \"type\": \"problem\",\n        \"identity\": \"baekjoon\",\n        \"target\": \"1010\",\n        \"content\": \"<p>재원이는 한 도시의 시장이 되었다. 이 도시에는&nbsp;도시를 동쪽과 서쪽으로 나누는 큰 일직선 모양의 강이 흐르고 있다.&nbsp;하지만 재원이는 다리가 없어서 시민들이 강을 건너는데 큰 불편을 겪고 있음을 알고 다리를 짓기로 결심하였다. 강 주변에서 다리를 짓기에 적합한 곳을 사이트라고 한다. 재원이는 강 주변을 면밀히 조사해 본 결과 강의 서쪽에는 N개의 사이트가 있고 동쪽에는 M개의 사이트가 있다는 것을 알았다. (N ≤ M)</p>\\n\\n<p>재원이는 서쪽의 사이트와 동쪽의 사이트를 다리로 연결하려고 한다. (이때 한 사이트에는 최대 한 개의 다리만 연결될 수 있다.) 재원이는 다리를 최대한 많이 지으려고 하기 때문에 서쪽의 사이트 개수만큼 (N개) 다리를 지으려고 한다. 다리끼리는 서로 겹쳐질 수 없다고 할 때 다리를 지을 수 있는 경우의 수를 구하는 프로그램을 작성하라.</p>\\n\\n<p><img alt=\\\"\\\" src=\\\"https://www.acmicpc.net/upload/201003/pic1.JPG\\\" style=\\\"height:353px; width:329px\\\"></p>\",\n        \"link\": \"https://www.acmicpc.net/problem/1010\",\n        \"info\": {\n            \"solvedUserCount\": 15771,\n            \"totalTryCount\": 32816,\n            \"tear\": \"Silver5\"\n        }\n    }\n}"}],"_postman_id":"249c8600-eab5-4a41-bdcc-98f6bc3a6db5"}],"id":"aa26ebed-5cec-4f26-bd96-eaef47b07a0c","_postman_id":"aa26ebed-5cec-4f26-bd96-eaef47b07a0c","description":""},{"name":"인증","item":[{"name":"사용자 입력 데이터 저장","id":"43e0d922-9ae3-4699-af9e-72455bc1af21","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"\",\n    \"username\": \"TESTUSERNAME\",\n    \"school\": \"\",\n    \"company\": \"\",\n    \"sex\": \"male\",\n    \"birthday\": \"2020-10-10\",\n    \"region\": \"\",\n    \"bio\": \"나는 유정란입니다.\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/users/:user_id/settings","description":"<h2 id=\"사용자의-회원가입-api\">사용자의 회원가입 API</h2>\n<h4 id=\"request\">request</h4>\n<ul>\n<li>name: String</li>\n<li>username: String</li>\n<li>school: String,</li>\n<li>company: String,</li>\n<li>authProvider: String(github | google | kakao)</li>\n<li>sex: String(men | women)</li>\n<li>birthday: Date</li>\n<li>region: String</li>\n<li>language: String(language id)[]</li>\n</ul>\n<h4 id=\"response\">response</h4>\n","urlObject":{"path":["v1","users",":user_id","settings"],"host":["http://localhost:3001"],"query":[],"variable":[{"description":{"content":"<p>유저 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"6195daa5856537d371ba17f7","key":"user_id"}]}},"response":[{"id":"78cb6cec-aea6-49d5-a6ba-efe064d9c51d","name":"사용자 입력 데이터 저장","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"\",\n    \"username\": \"TESTUSERNAME\",\n    \"school\": \"\",\n    \"company\": \"\",\n    \"sex\": \"male\",\n    \"birthday\": \"2020-10-10\",\n    \"region\": \"\",\n    \"bio\": \"나는 김동민입니다.\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:3001/v1/users/:user_id/settings","host":["http://localhost:3001"],"path":["v1","users",":user_id","settings"],"variable":[{"key":"user_id","value":null}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\"\n}"}],"_postman_id":"43e0d922-9ae3-4699-af9e-72455bc1af21"},{"name":"유저네임 유효성 검사","id":"12a346ce-fe46-432e-8553-2c1fc468c90f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/users?query=TESTUSERNAME","description":"<h2 id=\"사용자가-입력한-username-에-대하여-중복검사\">사용자가 입력한 username 에 대하여 중복검사</h2>\n<h4 id=\"request\">request</h4>\n<h4 id=\"response\">response</h4>\n<ul>\n<li>isUsernameValid: boolean</li>\n</ul>\n","urlObject":{"path":["v1","users"],"host":["http://localhost:3001"],"query":[{"key":"query","value":"TESTUSERNAME"}],"variable":[]}},"response":[{"id":"3088ba1d-ce59-4056-873e-bc024a1d5ded","name":"유저네임 유효성 검사","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/users?query=username","host":["http://localhost:3001"],"path":["v1","users"],"query":[{"key":"query","value":"username"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": false\n}"}],"_postman_id":"12a346ce-fe46-432e-8553-2c1fc468c90f"},{"name":"깃허브 인증 & 깃허브 username 가져오기","id":"278d7bfc-b111-446e-ab9c-bf10bfd3263a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/socials/github?redirect_uri","description":"<p><a href=\"http://localhost:3001/v1/socials/github?user_id=6195daa5856537d371ba17f7\">http://localhost:3001/v1/socials/github?user_id=6195daa5856537d371ba17f7</a>\n이렇게 user_id 에 user_id를 넣으면 깃허브 정보만 가져오는 API로 변함</p>\n","urlObject":{"path":["v1","socials","github"],"host":["http://localhost:3001"],"query":[{"key":"redirect_uri","value":null}],"variable":[]}},"response":[],"_postman_id":"278d7bfc-b111-446e-ab9c-bf10bfd3263a"},{"name":"깃허브 잔디 정보 가져오기","id":"af3468f1-8861-4578-abe2-270f788433c7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/users/:user_id/repositories/contribution","urlObject":{"path":["v1","users",":user_id","repositories","contribution"],"host":["http://localhost:3001"],"query":[],"variable":[{"type":"any","value":"6192173ad94aede2c74a67cb","key":"user_id"}]}},"response":[{"id":"187155f7-163e-4d6a-a8cb-ad95fb654b50","name":"깃허브 잔디 정보 가져오기","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/users/:user_id/repositories/contribution","host":["http://localhost:3001"],"path":["v1","users",":user_id","repositories","contribution"],"variable":[{"key":"user_id","value":"6192173ad94aede2c74a67cb"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"result\": {\n        \"2020-11-15\": 2,\n        \"2020-11-16\": 2,\n        \"2020-11-17\": 0,\n        \"2020-11-18\": 2,\n        \"2020-11-19\": 4,\n        \"2020-11-20\": 0,\n        \"2020-11-21\": 0,\n        \"2020-11-22\": 1,\n        \"2020-11-23\": 0,\n        \"2020-11-24\": 0,\n        \"2020-11-25\": 1,\n        \"2020-11-26\": 0,\n        \"2020-11-27\": 0,\n        \"2020-11-28\": 0,\n        \"2020-11-29\": 4,\n        \"2020-11-30\": 1,\n        \"2020-12-01\": 4,\n        \"2020-12-02\": 0,\n        \"2020-12-03\": 1,\n        \"2020-12-04\": 2,\n        \"2020-12-05\": 1,\n        \"2020-12-06\": 0,\n        \"2020-12-07\": 0,\n        \"2020-12-08\": 0,\n        \"2020-12-09\": 0,\n        \"2020-12-10\": 0,\n        \"2020-12-11\": 0,\n        \"2020-12-12\": 1,\n        \"2020-12-13\": 0,\n        \"2020-12-14\": 1,\n        \"2020-12-15\": 1,\n        \"2020-12-16\": 0,\n        \"2020-12-17\": 1,\n        \"2020-12-18\": 7,\n        \"2020-12-19\": 7,\n        \"2020-12-20\": 12,\n        \"2020-12-21\": 8,\n        \"2020-12-22\": 4,\n        \"2020-12-23\": 1,\n        \"2020-12-24\": 2,\n        \"2020-12-25\": 2,\n        \"2020-12-26\": 2,\n        \"2020-12-27\": 3,\n        \"2020-12-28\": 8,\n        \"2020-12-29\": 30,\n        \"2020-12-30\": 14,\n        \"2020-12-31\": 12,\n        \"2021-01-01\": 11,\n        \"2021-01-02\": 5,\n        \"2021-01-03\": 12,\n        \"2021-01-04\": 1,\n        \"2021-01-05\": 9,\n        \"2021-01-06\": 6,\n        \"2021-01-07\": 2,\n        \"2021-01-08\": 3,\n        \"2021-01-09\": 1,\n        \"2021-01-10\": 3,\n        \"2021-01-11\": 16,\n        \"2021-01-12\": 6,\n        \"2021-01-13\": 5,\n        \"2021-01-14\": 4,\n        \"2021-01-15\": 6,\n        \"2021-01-16\": 0,\n        \"2021-01-17\": 2,\n        \"2021-01-18\": 4,\n        \"2021-01-19\": 7,\n        \"2021-01-20\": 4,\n        \"2021-01-21\": 3,\n        \"2021-01-22\": 5,\n        \"2021-01-23\": 0,\n        \"2021-01-24\": 1,\n        \"2021-01-25\": 2,\n        \"2021-01-26\": 4,\n        \"2021-01-27\": 4,\n        \"2021-01-28\": 0,\n        \"2021-01-29\": 1,\n        \"2021-01-30\": 4,\n        \"2021-01-31\": 0,\n        \"2021-02-01\": 0,\n        \"2021-02-02\": 2,\n        \"2021-02-03\": 4,\n        \"2021-02-04\": 6,\n        \"2021-02-05\": 5,\n        \"2021-02-06\": 1,\n        \"2021-02-07\": 0,\n        \"2021-02-08\": 0,\n        \"2021-02-09\": 1,\n        \"2021-02-10\": 1,\n        \"2021-02-11\": 3,\n        \"2021-02-12\": 5,\n        \"2021-02-13\": 4,\n        \"2021-02-14\": 1,\n        \"2021-02-15\": 0,\n        \"2021-02-16\": 1,\n        \"2021-02-17\": 1,\n        \"2021-02-18\": 0,\n        \"2021-02-19\": 3,\n        \"2021-02-20\": 1,\n        \"2021-02-21\": 2,\n        \"2021-02-22\": 5,\n        \"2021-02-23\": 0,\n        \"2021-02-24\": 6,\n        \"2021-02-25\": 2,\n        \"2021-02-26\": 1,\n        \"2021-02-27\": 7,\n        \"2021-02-28\": 1,\n        \"2021-03-01\": 6,\n        \"2021-03-02\": 3,\n        \"2021-03-03\": 11,\n        \"2021-03-04\": 1,\n        \"2021-03-05\": 3,\n        \"2021-03-06\": 1,\n        \"2021-03-07\": 2,\n        \"2021-03-08\": 2,\n        \"2021-03-09\": 0,\n        \"2021-03-10\": 5,\n        \"2021-03-11\": 2,\n        \"2021-03-12\": 3,\n        \"2021-03-13\": 7,\n        \"2021-03-14\": 0,\n        \"2021-03-15\": 0,\n        \"2021-03-16\": 0,\n        \"2021-03-17\": 4,\n        \"2021-03-18\": 4,\n        \"2021-03-19\": 1,\n        \"2021-03-20\": 4,\n        \"2021-03-21\": 0,\n        \"2021-03-22\": 4,\n        \"2021-03-23\": 2,\n        \"2021-03-24\": 0,\n        \"2021-03-25\": 5,\n        \"2021-03-26\": 3,\n        \"2021-03-27\": 1,\n        \"2021-03-28\": 0,\n        \"2021-03-29\": 1,\n        \"2021-03-30\": 2,\n        \"2021-03-31\": 2,\n        \"2021-04-01\": 4,\n        \"2021-04-02\": 2,\n        \"2021-04-03\": 7,\n        \"2021-04-04\": 0,\n        \"2021-04-05\": 1,\n        \"2021-04-06\": 2,\n        \"2021-04-07\": 3,\n        \"2021-04-08\": 1,\n        \"2021-04-09\": 7,\n        \"2021-04-10\": 4,\n        \"2021-04-11\": 3,\n        \"2021-04-12\": 17,\n        \"2021-04-13\": 11,\n        \"2021-04-14\": 9,\n        \"2021-04-15\": 3,\n        \"2021-04-16\": 2,\n        \"2021-04-17\": 0,\n        \"2021-04-18\": 1,\n        \"2021-04-19\": 0,\n        \"2021-04-20\": 3,\n        \"2021-04-21\": 5,\n        \"2021-04-22\": 1,\n        \"2021-04-23\": 1,\n        \"2021-04-24\": 3,\n        \"2021-04-25\": 1,\n        \"2021-04-26\": 6,\n        \"2021-04-27\": 0,\n        \"2021-04-28\": 5,\n        \"2021-04-29\": 5,\n        \"2021-04-30\": 1,\n        \"2021-05-01\": 4,\n        \"2021-05-02\": 1,\n        \"2021-05-03\": 0,\n        \"2021-05-04\": 0,\n        \"2021-05-05\": 0,\n        \"2021-05-06\": 0,\n        \"2021-05-07\": 2,\n        \"2021-05-08\": 2,\n        \"2021-05-09\": 0,\n        \"2021-05-10\": 0,\n        \"2021-05-11\": 0,\n        \"2021-05-12\": 8,\n        \"2021-05-13\": 6,\n        \"2021-05-14\": 0,\n        \"2021-05-15\": 3,\n        \"2021-05-16\": 2,\n        \"2021-05-17\": 0,\n        \"2021-05-18\": 2,\n        \"2021-05-19\": 0,\n        \"2021-05-20\": 5,\n        \"2021-05-21\": 1,\n        \"2021-05-22\": 0,\n        \"2021-05-23\": 0,\n        \"2021-05-24\": 3,\n        \"2021-05-25\": 0,\n        \"2021-05-26\": 3,\n        \"2021-05-27\": 1,\n        \"2021-05-28\": 1,\n        \"2021-05-29\": 1,\n        \"2021-05-30\": 2,\n        \"2021-05-31\": 0,\n        \"2021-06-01\": 3,\n        \"2021-06-02\": 3,\n        \"2021-06-03\": 1,\n        \"2021-06-04\": 3,\n        \"2021-06-05\": 1,\n        \"2021-06-06\": 2,\n        \"2021-06-07\": 4,\n        \"2021-06-08\": 1,\n        \"2021-06-09\": 0,\n        \"2021-06-10\": 1,\n        \"2021-06-11\": 0,\n        \"2021-06-12\": 2,\n        \"2021-06-13\": 0,\n        \"2021-06-14\": 1,\n        \"2021-06-15\": 1,\n        \"2021-06-16\": 0,\n        \"2021-06-17\": 2,\n        \"2021-06-18\": 8,\n        \"2021-06-19\": 2,\n        \"2021-06-20\": 1,\n        \"2021-06-21\": 5,\n        \"2021-06-22\": 3,\n        \"2021-06-23\": 0,\n        \"2021-06-24\": 2,\n        \"2021-06-25\": 0,\n        \"2021-06-26\": 1,\n        \"2021-06-27\": 2,\n        \"2021-06-28\": 3,\n        \"2021-06-29\": 2,\n        \"2021-06-30\": 0,\n        \"2021-07-01\": 3,\n        \"2021-07-02\": 1,\n        \"2021-07-03\": 2,\n        \"2021-07-04\": 3,\n        \"2021-07-05\": 9,\n        \"2021-07-06\": 9,\n        \"2021-07-07\": 3,\n        \"2021-07-08\": 8,\n        \"2021-07-09\": 2,\n        \"2021-07-10\": 7,\n        \"2021-07-11\": 2,\n        \"2021-07-12\": 2,\n        \"2021-07-13\": 6,\n        \"2021-07-14\": 11,\n        \"2021-07-15\": 13,\n        \"2021-07-16\": 9,\n        \"2021-07-17\": 5,\n        \"2021-07-18\": 4,\n        \"2021-07-19\": 8,\n        \"2021-07-20\": 0,\n        \"2021-07-21\": 0,\n        \"2021-07-22\": 7,\n        \"2021-07-23\": 1,\n        \"2021-07-24\": 5,\n        \"2021-07-25\": 5,\n        \"2021-07-26\": 2,\n        \"2021-07-27\": 3,\n        \"2021-07-28\": 2,\n        \"2021-07-29\": 0,\n        \"2021-07-30\": 5,\n        \"2021-07-31\": 10,\n        \"2021-08-01\": 0,\n        \"2021-08-02\": 5,\n        \"2021-08-03\": 4,\n        \"2021-08-04\": 0,\n        \"2021-08-05\": 2,\n        \"2021-08-06\": 1,\n        \"2021-08-07\": 0,\n        \"2021-08-08\": 2,\n        \"2021-08-09\": 2,\n        \"2021-08-10\": 1,\n        \"2021-08-11\": 1,\n        \"2021-08-12\": 2,\n        \"2021-08-13\": 1,\n        \"2021-08-14\": 0,\n        \"2021-08-15\": 0,\n        \"2021-08-16\": 3,\n        \"2021-08-17\": 10,\n        \"2021-08-18\": 0,\n        \"2021-08-19\": 1,\n        \"2021-08-20\": 0,\n        \"2021-08-21\": 0,\n        \"2021-08-22\": 0,\n        \"2021-08-23\": 4,\n        \"2021-08-24\": 1,\n        \"2021-08-25\": 6,\n        \"2021-08-26\": 2,\n        \"2021-08-27\": 1,\n        \"2021-08-28\": 1,\n        \"2021-08-29\": 1,\n        \"2021-08-30\": 5,\n        \"2021-08-31\": 5,\n        \"2021-09-01\": 5,\n        \"2021-09-02\": 3,\n        \"2021-09-03\": 3,\n        \"2021-09-04\": 5,\n        \"2021-09-05\": 0,\n        \"2021-09-06\": 2,\n        \"2021-09-07\": 31,\n        \"2021-09-08\": 1,\n        \"2021-09-09\": 1,\n        \"2021-09-10\": 1,\n        \"2021-09-11\": 0,\n        \"2021-09-12\": 0,\n        \"2021-09-13\": 1,\n        \"2021-09-14\": 0,\n        \"2021-09-15\": 2,\n        \"2021-09-16\": 1,\n        \"2021-09-17\": 0,\n        \"2021-09-18\": 3,\n        \"2021-09-19\": 1,\n        \"2021-09-20\": 1,\n        \"2021-09-21\": 2,\n        \"2021-09-22\": 2,\n        \"2021-09-23\": 2,\n        \"2021-09-24\": 2,\n        \"2021-09-25\": 12,\n        \"2021-09-26\": 2,\n        \"2021-09-27\": 24,\n        \"2021-09-28\": 5,\n        \"2021-09-29\": 1,\n        \"2021-09-30\": 1,\n        \"2021-10-01\": 1,\n        \"2021-10-02\": 0,\n        \"2021-10-03\": 1,\n        \"2021-10-04\": 1,\n        \"2021-10-05\": 1,\n        \"2021-10-06\": 1,\n        \"2021-10-07\": 2,\n        \"2021-10-08\": 0,\n        \"2021-10-09\": 1,\n        \"2021-10-10\": 0,\n        \"2021-10-11\": 3,\n        \"2021-10-12\": 5,\n        \"2021-10-13\": 3,\n        \"2021-10-14\": 14,\n        \"2021-10-15\": 0,\n        \"2021-10-16\": 0,\n        \"2021-10-17\": 5,\n        \"2021-10-18\": 2,\n        \"2021-10-19\": 10,\n        \"2021-10-20\": 0,\n        \"2021-10-21\": 2,\n        \"2021-10-22\": 0,\n        \"2021-10-23\": 0,\n        \"2021-10-24\": 0,\n        \"2021-10-25\": 0,\n        \"2021-10-26\": 0,\n        \"2021-10-27\": 0,\n        \"2021-10-28\": 0,\n        \"2021-10-29\": 0,\n        \"2021-10-30\": 0,\n        \"2021-10-31\": 0,\n        \"2021-11-01\": 0,\n        \"2021-11-02\": 1,\n        \"2021-11-03\": 0,\n        \"2021-11-04\": 12,\n        \"2021-11-05\": 0,\n        \"2021-11-06\": 3,\n        \"2021-11-07\": 13,\n        \"2021-11-08\": 21,\n        \"2021-11-09\": 24,\n        \"2021-11-10\": 15,\n        \"2021-11-11\": 22,\n        \"2021-11-12\": 0,\n        \"2021-11-13\": 0,\n        \"2021-11-14\": 1,\n        \"2021-11-15\": 3\n    }\n}"}],"_postman_id":"af3468f1-8861-4578-abe2-270f788433c7"},{"name":"구글 로그인","id":"335eb76a-700d-469d-a4b2-6673c71130ee","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"formdata","formdata":[]},"url":"http://localhost:3001/v1/v1/socials/google?redirect_uri=","description":"<h2 id=\"구글-로그인-페이지-요청-api\">구글 로그인 페이지 요청 API</h2>\n<h4 id=\"response\">response</h4>\n<p>redirect\ngoogle oauth 로그인 페이지로 redirect</p>\n","urlObject":{"path":["v1","v1","socials","google"],"host":["http://localhost:3001"],"query":[{"description":{"content":"<p>선택사항 redirect uri 상대경로</p>\n","type":"text/plain"},"key":"redirect_uri","value":""}],"variable":[]}},"response":[{"id":"bb469b41-33ca-49b8-a46e-3a644e1189ad","name":"구글 로그인","originalRequest":{"method":"GET","header":[],"url":"http://localhost:3001/v1/v1/socials/google"},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"리다이렉트"}],"_postman_id":"335eb76a-700d-469d-a4b2-6673c71130ee"},{"name":"현재 사용자 정보 요청","id":"08e8af7e-797b-4660-a391-c2871e353298","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[],"url":"http://localhost:3001/v1/users/me","description":"<h2 id=\"현재-사용자-정보-요청-api\">현재 사용자 정보 요청 API</h2>\n<h4 id=\"request\">request</h4>\n<h4 id=\"response\">response</h4>\n<ul>\n<li>username: String</li>\n<li>userID: String(user id)</li>\n</ul>\n","urlObject":{"path":["v1","users","me"],"host":["http://localhost:3001"],"query":[],"variable":[]}},"response":[{"id":"f15f92a5-c9b7-46d4-8a06-64d1f6abe40e","name":"현재 사용자 정보 요청","originalRequest":{"method":"GET","header":[],"url":"http://localhost:3001/v1/users/me"},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"_id\": \"6189fe77e0b6fb7c282d505f\",\n    \"username\": \"TESTUSERNAME\",\n    \"isRegistered\": true,\n    \"name\": \"\",\n    \"bio\": \"나는 김동민입니다.\",\n    \"follows\": [\n        \"618a30893f3e360fa260e046\"\n    ],\n    \"followers\": [\n        \"618a30893f3e360fa260e046\"\n    ]\n}"}],"_postman_id":"08e8af7e-797b-4660-a391-c2871e353298"},{"name":"로그아웃","id":"79b14d76-6609-4534-8a79-824b4d4aa072","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[],"url":"http://localhost:3001/v1/users/logout","urlObject":{"path":["v1","users","logout"],"host":["http://localhost:3001"],"query":[],"variable":[]}},"response":[{"id":"44e4ae6e-e54f-459e-bfb4-0d99ede093e4","name":"로그아웃","originalRequest":{"method":"GET","header":[],"url":"http://localhost:3001/v1/users/logout"},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"리다이렉트"}],"_postman_id":"79b14d76-6609-4534-8a79-824b4d4aa072"},{"name":"티스토리 블로그 인증","id":"6012440c-0511-41f5-a882-6235bb21f741","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[],"url":"http://localhost:3001/v1/socials/tistory?redirect_uri=","urlObject":{"path":["v1","socials","tistory"],"host":["http://localhost:3001"],"query":[{"description":{"content":"<p>돌아갈 client path</p>\n","type":"text/plain"},"key":"redirect_uri","value":""}],"variable":[]}},"response":[{"id":"e31e8e83-88fb-4561-ab62-a09e2b5bc038","name":"티스토리 블로그 인증","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/socials/tistory?redirect_uri=/path","host":["http://localhost:3001"],"path":["v1","socials","tistory"],"query":[{"key":"redirect_uri","value":"/path","description":"돌아갈 client path"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": \"https://www.tistory.com/oauth/authorize?client_id=8c1a5029b582b7ba0895473dd299716f&redirect_uri=http://localhost:3001/v1/socials/tistory/callback&response_type=code&state=/path\"\n}"}],"_postman_id":"6012440c-0511-41f5-a882-6235bb21f741"},{"name":"벨로그 블로그 이메일 인증","id":"729d17f3-b89b-4a10-a41b-5a7bac1b7565","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"userID\": \"6189fe77e0b6fb7c282d505f\",\n    \"blogUsername\": \"dmin0211\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/socials/velog","urlObject":{"path":["v1","socials","velog"],"host":["http://localhost:3001"],"query":[],"variable":[]}},"response":[],"_postman_id":"729d17f3-b89b-4a10-a41b-5a7bac1b7565"},{"name":"카카오 인증","id":"07b41bdd-f284-4a7b-ac67-30854612f5c2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/socials/kakao?redirect_uri=","urlObject":{"path":["v1","socials","kakao"],"host":["http://localhost:3001"],"query":[{"key":"redirect_uri","value":""}],"variable":[]}},"response":[],"_postman_id":"07b41bdd-f284-4a7b-ac67-30854612f5c2"},{"name":"이미 로그인한 유저 깃허브 연동","id":"ffef6538-70c8-485b-965f-54faf0155c90","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/socials/github?user_id=6195daa5856537d371ba17f7&redirect_uri","urlObject":{"path":["v1","socials","github"],"host":["http://localhost:3001"],"query":[{"key":"user_id","value":"6195daa5856537d371ba17f7"},{"description":{"content":"<p>선택사항 redirect uri 상대경로</p>\n","type":"text/plain"},"key":"redirect_uri","value":null}],"variable":[]}},"response":[],"_postman_id":"ffef6538-70c8-485b-965f-54faf0155c90"}],"id":"8d44a3cb-67f6-41c8-a6e0-fb47c06ecd9a","_postman_id":"8d44a3cb-67f6-41c8-a6e0-fb47c06ecd9a","description":""},{"name":"타임라인","item":[{"name":"타임라인 불러오기","id":"03bc8e6f-2ba3-48f2-ac75-0b2009c41ef3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[],"url":"http://localhost:3001/v1/posts?user_id=6195daa5856537d371ba17f7&cursor=0","description":"<h2 id=\"offset-부터-타임라인-불러오기-api\">Offset 부터 타임라인 불러오기 API</h2>\n<h4 id=\"request\">request</h4>\n<h4 id=\"response\">response</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>\"postList\": [\n    {\n        \"postId\": \"String(post id)\",\n        \"title\": \"\",\n        \"content\": \"\",\n        \"createdAt\": \"Date\",\n        \"isUpdated\": \"boolean\",\n        \"writer\": \"String(user id)\",\n        \"image\": \"String(image url)\",\n        \"type\": \"github | blog | algorithm | normal\",\n        \"link\": \"\",\n        \"likeCount\": \"Int\",\n        \"comments\": [\n            {\n                \"writer\": \"String(user id)\",\n                \"createdAt\": \"Date\",\n                \"isUpdated\": \"boolean\",\n                \"content\": \"\",\n                \"likeCount\": \"Int\"\n            }\n        ]\n    }\n]\n</code></pre>","urlObject":{"path":["v1","posts"],"host":["http://localhost:3001"],"query":[{"description":{"content":"<p>유저 고유 식별자</p>\n","type":"text/plain"},"key":"user_id","value":"6195daa5856537d371ba17f7"},{"description":{"content":"<p>게시글의 인덱스 번호</p>\n","type":"text/plain"},"key":"cursor","value":"0"}],"variable":[]}},"response":[{"id":"600ed56d-a339-4171-91e0-e3121376f055","name":"타임라인 불러오기","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/posts?user_id=6195daa5856537d371ba17f7&cursor=0","host":["http://localhost:3001"],"path":["v1","posts"],"query":[{"key":"user_id","value":"6195daa5856537d371ba17f7","description":"유저 고유 식별자"},{"key":"cursor","value":"0","description":"게시글의 인덱스 번호"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"nextCursor\": 3,\n    \"data\": [\n        {\n            \"_id\": \"619647ad85cd9fec558b8273\",\n            \"content\": \"저의 이번주 활동 시간입니다~~~ 어떤가요?? 다들 공유해주세요!!\",\n            \"tags\": [],\n            \"type\": \"normal\",\n            \"createdAt\": \"2021-11-18T12:31:41.544Z\",\n            \"updatedAt\": \"2021-11-18T12:31:41.544Z\",\n            \"user\": {\n                \"_id\": \"6194d078928b431f065e0997\",\n                \"username\": \"dmin02111\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/IMNhw6aSsPZW9V8cIw93A.png\"\n            },\n            \"images\": [\n                {\n                    \"_id\": \"619647ad85cd9fec558b8276\",\n                    \"url\": \"https://kr.object.ncloudstorage.com/cocoo/posts/_A4mwNfNzLvX5jntnSP77.png\"\n                }\n            ],\n            \"comments\": [\n                {\n                    \"_id\": \"619f18dcb5d2552c7bf43ead\",\n                    \"content\": \"1\",\n                    \"createdAt\": \"2021-11-25T05:02:20.429Z\",\n                    \"updatedAt\": \"2021-11-25T05:02:20.429Z\",\n                    \"user\": {\n                        \"_id\": \"6194d21006d472d1f4839373\",\n                        \"username\": \"hyunmindev\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"619f18ddb5d2552c7bf43eba\",\n                    \"content\": \"2\",\n                    \"createdAt\": \"2021-11-25T05:02:21.511Z\",\n                    \"updatedAt\": \"2021-11-25T05:02:21.511Z\",\n                    \"user\": {\n                        \"_id\": \"6194d21006d472d1f4839373\",\n                        \"username\": \"hyunmindev\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"619f18deb5d2552c7bf43ec7\",\n                    \"content\": \"3\",\n                    \"createdAt\": \"2021-11-25T05:02:22.537Z\",\n                    \"updatedAt\": \"2021-11-25T05:02:22.537Z\",\n                    \"user\": {\n                        \"_id\": \"6194d21006d472d1f4839373\",\n                        \"username\": \"hyunmindev\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"619f18dfb5d2552c7bf43ed4\",\n                    \"content\": \"4\",\n                    \"createdAt\": \"2021-11-25T05:02:23.470Z\",\n                    \"updatedAt\": \"2021-11-25T05:02:23.470Z\",\n                    \"user\": {\n                        \"_id\": \"6194d21006d472d1f4839373\",\n                        \"username\": \"hyunmindev\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"619f18e0b5d2552c7bf43ee1\",\n                    \"content\": \"5\",\n                    \"createdAt\": \"2021-11-25T05:02:24.835Z\",\n                    \"updatedAt\": \"2021-11-25T05:02:24.835Z\",\n                    \"user\": {\n                        \"_id\": \"6194d21006d472d1f4839373\",\n                        \"username\": \"hyunmindev\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"619f18e3b5d2552c7bf43eee\",\n                    \"content\": \"6\",\n                    \"createdAt\": \"2021-11-25T05:02:27.982Z\",\n                    \"updatedAt\": \"2021-11-25T05:02:27.982Z\",\n                    \"user\": {\n                        \"_id\": \"6194d21006d472d1f4839373\",\n                        \"username\": \"hyunmindev\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"619f18e5b5d2552c7bf43efb\",\n                    \"content\": \"7\",\n                    \"createdAt\": \"2021-11-25T05:02:29.736Z\",\n                    \"updatedAt\": \"2021-11-25T05:02:29.736Z\",\n                    \"user\": {\n                        \"_id\": \"6194d21006d472d1f4839373\",\n                        \"username\": \"hyunmindev\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"619f18e7b5d2552c7bf43f08\",\n                    \"content\": \"8\",\n                    \"createdAt\": \"2021-11-25T05:02:31.712Z\",\n                    \"updatedAt\": \"2021-11-25T05:02:31.712Z\",\n                    \"user\": {\n                        \"_id\": \"6194d21006d472d1f4839373\",\n                        \"username\": \"hyunmindev\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"619f18e8b5d2552c7bf43f15\",\n                    \"content\": \"9\",\n                    \"createdAt\": \"2021-11-25T05:02:32.460Z\",\n                    \"updatedAt\": \"2021-11-25T05:02:32.460Z\",\n                    \"user\": {\n                        \"_id\": \"6194d21006d472d1f4839373\",\n                        \"username\": \"hyunmindev\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"619f18ecb5d2552c7bf43f22\",\n                    \"content\": \"10\",\n                    \"createdAt\": \"2021-11-25T05:02:36.187Z\",\n                    \"updatedAt\": \"2021-11-25T05:02:36.187Z\",\n                    \"user\": {\n                        \"_id\": \"6194d21006d472d1f4839373\",\n                        \"username\": \"hyunmindev\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"619f18efb5d2552c7bf43f30\",\n                    \"content\": \"11\",\n                    \"createdAt\": \"2021-11-25T05:02:39.317Z\",\n                    \"updatedAt\": \"2021-11-25T05:02:39.317Z\",\n                    \"user\": {\n                        \"_id\": \"6194d21006d472d1f4839373\",\n                        \"username\": \"hyunmindev\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"619f18f0b5d2552c7bf43f3d\",\n                    \"content\": \"12\",\n                    \"createdAt\": \"2021-11-25T05:02:40.691Z\",\n                    \"updatedAt\": \"2021-11-25T05:02:40.691Z\",\n                    \"user\": {\n                        \"_id\": \"6194d21006d472d1f4839373\",\n                        \"username\": \"hyunmindev\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"619f18f2b5d2552c7bf43f4a\",\n                    \"content\": \"13\",\n                    \"createdAt\": \"2021-11-25T05:02:42.965Z\",\n                    \"updatedAt\": \"2021-11-25T05:02:42.965Z\",\n                    \"user\": {\n                        \"_id\": \"6194d21006d472d1f4839373\",\n                        \"username\": \"hyunmindev\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"619f18f4b5d2552c7bf43f57\",\n                    \"content\": \"14\",\n                    \"createdAt\": \"2021-11-25T05:02:44.763Z\",\n                    \"updatedAt\": \"2021-11-25T05:02:44.763Z\",\n                    \"user\": {\n                        \"_id\": \"6194d21006d472d1f4839373\",\n                        \"username\": \"hyunmindev\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"61a060fa5464777d0bad49d9\",\n                    \"content\": \"좋네요!\",\n                    \"createdAt\": \"2021-11-26T04:22:18.199Z\",\n                    \"updatedAt\": \"2021-11-26T04:22:18.199Z\",\n                    \"user\": {\n                        \"_id\": \"61a060615464777d0bad4794\",\n                        \"username\": \"amor\",\n                        \"profileImage\": \"/images/default_profile_image.jpg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"61a061955464777d0bad50c3\",\n                    \"content\": \"댓글\",\n                    \"createdAt\": \"2021-11-26T04:24:53.342Z\",\n                    \"updatedAt\": \"2021-11-26T04:24:53.342Z\",\n                    \"user\": {\n                        \"_id\": \"61a060615464777d0bad4794\",\n                        \"username\": \"amor\",\n                        \"profileImage\": \"/images/default_profile_image.jpg\"\n                    },\n                    \"likes\": []\n                }\n            ],\n            \"likes\": []\n        },\n        {\n            \"_id\": \"6196427185cd9fec558b6563\",\n            \"content\": \"테스트 합니다\",\n            \"tags\": [],\n            \"type\": \"normal\",\n            \"createdAt\": \"2021-11-18T12:09:21.255Z\",\n            \"updatedAt\": \"2021-11-18T12:09:21.255Z\",\n            \"user\": {\n                \"_id\": \"6194d078928b431f065e0997\",\n                \"username\": \"dmin02111\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/IMNhw6aSsPZW9V8cIw93A.png\"\n            },\n            \"images\": [\n                {\n                    \"_id\": \"6196427185cd9fec558b6566\",\n                    \"url\": \"https://kr.object.ncloudstorage.com/cocoo/posts/OFUmeusyPIQuBOF479PmD.png\"\n                }\n            ],\n            \"comments\": [\n                {\n                    \"_id\": \"6196448785cd9fec558b6eff\",\n                    \"content\": \"앙 부캠띠~\",\n                    \"createdAt\": \"2021-11-18T12:18:15.977Z\",\n                    \"updatedAt\": \"2021-11-18T12:18:15.977Z\",\n                    \"user\": {\n                        \"_id\": \"6195daa5856537d371ba17f7\",\n                        \"username\": \"codingegg\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                    },\n                    \"likes\": [\n                        {\n                            \"_id\": \"619665eb252efc2605054413\",\n                            \"createdAt\": \"2021-11-18T14:40:43.011Z\",\n                            \"user\": {\n                                \"_id\": \"6194d078928b431f065e0997\",\n                                \"username\": \"dmin02111\",\n                                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/IMNhw6aSsPZW9V8cIw93A.png\"\n                            }\n                        },\n                        {\n                            \"_id\": \"61a03dac252efc26053c6053\",\n                            \"createdAt\": \"2021-11-26T01:51:40.880Z\",\n                            \"user\": {\n                                \"_id\": \"6194d21006d472d1f4839373\",\n                                \"username\": \"hyunmindev\",\n                                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                            }\n                        }\n                    ]\n                },\n                {\n                    \"_id\": \"6196448e85cd9fec558b6f7a\",\n                    \"content\": \"헤헤 재밌당\",\n                    \"createdAt\": \"2021-11-18T12:18:22.751Z\",\n                    \"updatedAt\": \"2021-11-18T12:18:22.751Z\",\n                    \"user\": {\n                        \"_id\": \"6195daa5856537d371ba17f7\",\n                        \"username\": \"codingegg\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                    },\n                    \"likes\": [\n                        {\n                            \"_id\": \"6196448f252efc260504d202\",\n                            \"createdAt\": \"2021-11-18T12:18:23.428Z\",\n                            \"user\": {\n                                \"_id\": \"6195daa5856537d371ba17f7\",\n                                \"username\": \"codingegg\",\n                                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                            }\n                        },\n                        {\n                            \"_id\": \"619665eb252efc260505441e\",\n                            \"createdAt\": \"2021-11-18T14:40:43.709Z\",\n                            \"user\": {\n                                \"_id\": \"6194d078928b431f065e0997\",\n                                \"username\": \"dmin02111\",\n                                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/IMNhw6aSsPZW9V8cIw93A.png\"\n                            }\n                        }\n                    ]\n                }\n            ],\n            \"likes\": [\n                {\n                    \"_id\": \"6196438a252efc260504ccdb\",\n                    \"createdAt\": \"2021-11-18T12:14:02.965Z\",\n                    \"user\": {\n                        \"_id\": \"6195daa5856537d371ba17f7\",\n                        \"username\": \"codingegg\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                    }\n                },\n                {\n                    \"_id\": \"61964488252efc260504d186\",\n                    \"createdAt\": \"2021-11-18T12:18:16.022Z\",\n                    \"user\": {\n                        \"_id\": \"6194d078928b431f065e0997\",\n                        \"username\": \"dmin02111\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/IMNhw6aSsPZW9V8cIw93A.png\"\n                    }\n                },\n                {\n                    \"_id\": \"619f5e26252efc26053afc6e\",\n                    \"createdAt\": \"2021-11-25T09:57:58.476Z\",\n                    \"user\": {\n                        \"_id\": \"6194d21006d472d1f4839373\",\n                        \"username\": \"hyunmindev\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                    }\n                }\n            ]\n        },\n        {\n            \"_id\": \"6196425d85cd9fec558b6524\",\n            \"content\": \"배포 된건가요??\",\n            \"tags\": [],\n            \"type\": \"normal\",\n            \"createdAt\": \"2021-11-18T12:09:01.464Z\",\n            \"updatedAt\": \"2021-11-18T12:09:01.464Z\",\n            \"user\": {\n                \"_id\": \"6194d078928b431f065e0997\",\n                \"username\": \"dmin02111\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/IMNhw6aSsPZW9V8cIw93A.png\"\n            },\n            \"images\": [\n                {\n                    \"_id\": \"6196425d85cd9fec558b6527\",\n                    \"url\": \"https://kr.object.ncloudstorage.com/cocoo/posts/KiuVtiguiu_0qELtjgMRK.png\"\n                }\n            ],\n            \"comments\": [\n                {\n                    \"_id\": \"6196445f85cd9fec558b6dd1\",\n                    \"content\": \"네 배포 됬습니다~\",\n                    \"createdAt\": \"2021-11-18T12:17:35.802Z\",\n                    \"updatedAt\": \"2021-11-18T12:17:35.802Z\",\n                    \"user\": {\n                        \"_id\": \"6195daa5856537d371ba17f7\",\n                        \"username\": \"codingegg\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                    },\n                    \"likes\": [\n                        {\n                            \"_id\": \"61964476252efc260504d0f6\",\n                            \"createdAt\": \"2021-11-18T12:17:58.569Z\",\n                            \"user\": {\n                                \"_id\": \"6195daa5856537d371ba17f7\",\n                                \"username\": \"codingegg\",\n                                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                            }\n                        },\n                        {\n                            \"_id\": \"61964486252efc260504d16f\",\n                            \"createdAt\": \"2021-11-18T12:18:14.108Z\",\n                            \"user\": {\n                                \"_id\": \"6194d078928b431f065e0997\",\n                                \"username\": \"dmin02111\",\n                                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/IMNhw6aSsPZW9V8cIw93A.png\"\n                            }\n                        }\n                    ]\n                },\n                {\n                    \"_id\": \"619c7888b7446785a033d230\",\n                    \"content\": \"됬이 아니라 됐이에요\",\n                    \"createdAt\": \"2021-11-23T05:13:44.381Z\",\n                    \"updatedAt\": \"2021-11-23T05:13:44.381Z\",\n                    \"user\": {\n                        \"_id\": \"6194d21006d472d1f4839373\",\n                        \"username\": \"hyunmindev\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"619f67bf11a4e935092df469\",\n                    \"content\": \"댓글추가\",\n                    \"createdAt\": \"2021-11-25T10:38:55.790Z\",\n                    \"updatedAt\": \"2021-11-25T10:38:55.790Z\",\n                    \"user\": {\n                        \"_id\": \"6195daa5856537d371ba17f7\",\n                        \"username\": \"codingegg\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"619f6908e51cb9cbaa508577\",\n                    \"content\": \"댓글추가\",\n                    \"createdAt\": \"2021-11-25T10:44:24.275Z\",\n                    \"updatedAt\": \"2021-11-25T10:44:24.275Z\",\n                    \"user\": {\n                        \"_id\": \"6195daa5856537d371ba17f7\",\n                        \"username\": \"codingegg\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                    },\n                    \"likes\": []\n                }\n            ],\n            \"likes\": [\n                {\n                    \"_id\": \"61964310252efc260504c9ce\",\n                    \"createdAt\": \"2021-11-18T12:12:00.542Z\",\n                    \"user\": {\n                        \"_id\": \"6195daa5856537d371ba17f7\",\n                        \"username\": \"codingegg\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                    }\n                },\n                {\n                    \"_id\": \"6196448e252efc260504d1eb\",\n                    \"createdAt\": \"2021-11-18T12:18:22.134Z\",\n                    \"user\": {\n                        \"_id\": \"6194d078928b431f065e0997\",\n                        \"username\": \"dmin02111\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/IMNhw6aSsPZW9V8cIw93A.png\"\n                    }\n                }\n            ]\n        }\n    ]\n}"}],"_postman_id":"03bc8e6f-2ba3-48f2-ac75-0b2009c41ef3"},{"name":"포스트 좋아요 리스트 불러오기","id":"5dd1136c-e594-46ab-a3d2-6cc0e923559f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/posts/:post_id/likes","description":"<h2 id=\"포스트를-좋아요-누른-사용자-정보-리스트를-가져오는-api\">포스트를 좋아요 누른 사용자 정보 리스트를 가져오는 API</h2>\n<h4 id=\"request\">request</h4>\n<h4 id=\"response\">response</h4>\n<ul>\n<li>users: Object[]<ul>\n<li>username</li>\n<li>profileImage</li>\n</ul>\n</li>\n</ul>\n","urlObject":{"path":["v1","posts",":post_id","likes"],"host":["http://localhost:3001"],"query":[],"variable":[{"description":{"content":"<p>포스트 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"61951fc95c66586c0d137f28","key":"post_id"}]}},"response":[{"id":"6f48c386-8e96-4e95-9661-975a9993ae07","name":"포스트 좋아요 리스트 불러오기","originalRequest":{"method":"GET","header":[],"url":{"raw":"/v1/posts/:post_id/likes","path":["v1","posts",":post_id","likes"],"variable":[{"key":"post_id","value":"61951fc95c66586c0d137f28","description":"포스트 고유 식별자"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": [\n        {\n            \"_id\": \"6195aa09252efc260503c691\",\n            \"createdAt\": \"2021-11-18T01:19:06.173Z\",\n            \"user\": {\n                \"_id\": \"6194d259dd93761039d5666f\",\n                \"username\": \"beomseok\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/Sk5wcHvx9-ywPmwMhScv-.jpg\"\n            }\n        },\n        {\n            \"_id\": \"619622a4252efc2605048669\",\n            \"createdAt\": \"2021-11-18T09:53:40.694Z\",\n            \"user\": {\n                \"_id\": \"6194d21006d472d1f4839373\",\n                \"username\": \"hyunmindev\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/_8yfBQfhigxB22IiI8Zd9.png\"\n            }\n        }\n    ]\n}"}],"_postman_id":"5dd1136c-e594-46ab-a3d2-6cc0e923559f"},{"name":"포스트 좋아요","id":"9baa57af-bd65-4041-b54b-2e92bf833945","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"userID\": \"6195daa5856537d371ba17f7\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/posts/:post_id/likes","description":"<h2 id=\"게시글에-대하여-좋아요-추가-api\">게시글에 대하여 좋아요 추가 API</h2>\n<h4 id=\"request\">request</h4>\n<ul>\n<li>userID: String (user id)</li>\n</ul>\n<h4 id=\"response\">response</h4>\n<ul>\n<li>likeID: Int (like id)</li>\n</ul>\n","urlObject":{"path":["v1","posts",":post_id","likes"],"host":["http://localhost:3001"],"query":[],"variable":[{"description":{"content":"<p>포스트 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"61951fc95c66586c0d137f28","key":"post_id"}]}},"response":[{"id":"4166d2e2-b13e-4a81-bf15-04a521ebc884","name":"포스트 좋아요","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"userID\": \"String (user id)\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:3001/v1/posts/:post_id/likes","host":["http://localhost:3001"],"path":["v1","posts",":post_id","likes"],"variable":[{"key":"post_id","value":"61911e29eb27399661e66591","description":"포스트 고유 식별자"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": {\n        \"_id\": \"61978983252efc2605062490\"\n    }\n}"}],"_postman_id":"9baa57af-bd65-4041-b54b-2e92bf833945"},{"name":"포스트 좋아요 취소","id":"6852b59c-7d80-4719-ae41-8d33bc1f9894","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n    \"userID\": \"6195daa5856537d371ba17f7\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/posts/:post_id/likes/:like_id","description":"<h2 id=\"게시글에-대하여-좋아요-취소-api\">게시글에 대하여 좋아요 취소 API</h2>\n<h4 id=\"request\">request</h4>\n<h4 id=\"response\">response</h4>\n","urlObject":{"path":["v1","posts",":post_id","likes",":like_id"],"host":["http://localhost:3001"],"query":[],"variable":[{"description":{"content":"<p>포스트 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"61951fc95c66586c0d137f28","key":"post_id"},{"description":{"content":"<p>좋아요 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"61978983252efc2605062490","key":"like_id"}]}},"response":[{"id":"be53a3e2-41d8-4304-b9bf-cdb24504c161","name":"포스트 좋아요 취소","originalRequest":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n    \"userID\": \"6195daa5856537d371ba17f7\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:3001/v1/posts/:post_id/likes/:like_id","host":["http://localhost:3001"],"path":["v1","posts",":post_id","likes",":like_id"],"variable":[{"key":"post_id","value":"61951fc95c66586c0d137f28","description":"포스트 고유 식별자"},{"key":"like_id","value":"61978983252efc2605062490","description":"좋아요 고유 식별자"}]}},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\r\n    \"code\": \"Success\"\r\n}"}],"_postman_id":"6852b59c-7d80-4719-ae41-8d33bc1f9894"},{"name":"포스트 한개 더보기","id":"4de439ff-6980-410c-9c8d-ef6a470ab119","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/posts/:post_id","description":"<h2 id=\"포스트의-전체-정보를-불러오는-api\">포스트의 전체 정보를 불러오는 API</h2>\n<h4 id=\"request\">request</h4>\n<h4 id=\"response\">response</h4>\n<ul>\n<li>comments: Object []<ul>\n<li>username</li>\n</ul>\n</li>\n</ul>\n","urlObject":{"path":["v1","posts",":post_id"],"host":["http://localhost:3001"],"query":[],"variable":[{"description":{"content":"<p>포스트 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"61951fc95c66586c0d137f28","key":"post_id"}]}},"response":[{"id":"477bb4c1-e1b2-4124-9ca1-a173cd48616d","name":"포스트 한개 더보기","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/posts/:post_id","host":["http://localhost:3001"],"path":["v1","posts",":post_id"],"variable":[{"key":"post_id","value":"61951fc95c66586c0d137f28","description":"포스트 고유 식별자"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": {\n        \"_id\": \"61951fc95c66586c0d137f28\",\n        \"content\": \"깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브\",\n        \"tags\": [],\n        \"type\": \"normal\",\n        \"createdAt\": \"2021-11-17T15:29:13.178Z\",\n        \"updatedAt\": \"2021-11-17T15:29:13.178Z\",\n        \"user\": {\n            \"_id\": \"6194d259dd93761039d5666f\",\n            \"username\": \"beomseok\",\n            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/Sk5wcHvx9-ywPmwMhScv-.jpg\"\n        },\n        \"comments\": [\n            {\n                \"_id\": \"61961cb062b16033e3d07e0e\",\n                \"content\": \"test\",\n                \"createdAt\": \"2021-11-18T09:28:16.825Z\",\n                \"updatedAt\": \"2021-11-18T09:28:16.825Z\",\n                \"user\": {\n                    \"_id\": \"6194d21006d472d1f4839373\",\n                    \"username\": \"hyunmindev\",\n                    \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/_8yfBQfhigxB22IiI8Zd9.png\"\n                },\n                \"likes\": [\n                    {\n                        \"_id\": \"61961cb3252efc26050478fb\",\n                        \"createdAt\": \"2021-11-18T09:28:19.216Z\",\n                        \"user\": {\n                            \"_id\": \"6194d21006d472d1f4839373\",\n                            \"username\": \"hyunmindev\",\n                            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/_8yfBQfhigxB22IiI8Zd9.png\"\n                        }\n                    },\n                    {\n                        \"_id\": \"6196328d252efc260504a3de\",\n                        \"createdAt\": \"2021-11-18T11:01:33.446Z\",\n                        \"user\": {\n                            \"_id\": \"6194d259dd93761039d5666f\",\n                            \"username\": \"beomseok\",\n                            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/Sk5wcHvx9-ywPmwMhScv-.jpg\"\n                        }\n                    },\n                    {\n                        \"_id\": \"619644a5252efc260504d252\",\n                        \"createdAt\": \"2021-11-18T12:18:45.535Z\",\n                        \"user\": {\n                            \"_id\": \"6195daa5856537d371ba17f7\",\n                            \"username\": \"codingegg\",\n                            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                        }\n                    }\n                ]\n            },\n            {\n                \"_id\": \"619644a485cd9fec558b6fc0\",\n                \"content\": \"테스트입니당!\",\n                \"createdAt\": \"2021-11-18T12:18:44.868Z\",\n                \"updatedAt\": \"2021-11-18T12:18:44.868Z\",\n                \"user\": {\n                    \"_id\": \"6195daa5856537d371ba17f7\",\n                    \"username\": \"codingegg\",\n                    \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                },\n                \"likes\": [\n                    {\n                        \"_id\": \"61964527252efc260504d52b\",\n                        \"createdAt\": \"2021-11-18T12:20:55.694Z\",\n                        \"user\": {\n                            \"_id\": \"6195daa5856537d371ba17f7\",\n                            \"username\": \"codingegg\",\n                            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                        }\n                    }\n                ]\n            },\n            {\n                \"_id\": \"6196451485cd9fec558b7163\",\n                \"content\": \"깃허브 최고야깃허브 최고야깃허브 최고야깃허브 최고야깃허브 최고야깃허브 최고야깃허브 최고야깃허브 최고야깃허브 최고야깃허브 최고야깃허브 최고야깃허브 최고야깃허브 최고야깃허브 최고야깃허브 최고야깃허브 최고야깃허브 최고야깃허브 최고야깃허브 최고야깃허브 최고야깃허브 최고야\",\n                \"createdAt\": \"2021-11-18T12:20:36.498Z\",\n                \"updatedAt\": \"2021-11-18T12:20:36.498Z\",\n                \"user\": {\n                    \"_id\": \"6195daa5856537d371ba17f7\",\n                    \"username\": \"codingegg\",\n                    \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                },\n                \"likes\": []\n            }\n        ],\n        \"likes\": [\n            {\n                \"_id\": \"6195aa09252efc260503c691\",\n                \"createdAt\": \"2021-11-18T01:19:06.173Z\",\n                \"user\": {\n                    \"_id\": \"6194d259dd93761039d5666f\",\n                    \"username\": \"beomseok\",\n                    \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/Sk5wcHvx9-ywPmwMhScv-.jpg\"\n                }\n            },\n            {\n                \"_id\": \"619622a4252efc2605048669\",\n                \"createdAt\": \"2021-11-18T09:53:40.694Z\",\n                \"user\": {\n                    \"_id\": \"6194d21006d472d1f4839373\",\n                    \"username\": \"hyunmindev\",\n                    \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/_8yfBQfhigxB22IiI8Zd9.png\"\n                }\n            }\n        ],\n        \"images\": [\n            {\n                \"_id\": \"61951fc95c66586c0d137f2b\",\n                \"url\": \"https://kr.object.ncloudstorage.com/cocoo/posts/iFVJhuH47uhrue3uftEkm.png\"\n            }\n        ]\n    }\n}"}],"_postman_id":"4de439ff-6980-410c-9c8d-ef6a470ab119"},{"name":"댓글 작성","id":"4058de0b-974b-4ca1-8ebf-665a3d091bd8","protocolProfileBehavior":{"disableBodyPruning":true,"disabledSystemHeaders":{}},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"userID\": \"6195daa5856537d371ba17f7\",\r\n    \"content\": \"댓글추가\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/posts/:postId/comments","urlObject":{"path":["v1","posts",":postId","comments"],"host":["http://localhost:3001"],"query":[],"variable":[{"type":"any","value":"6196460885cd9fec558b77a3","key":"postId"}]}},"response":[{"id":"30b37a57-ed0e-4d98-bd50-85724a63824c","name":"댓글 작성","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"userID\": \"6189fe77e0b6fb7c282d505f\",\r\n    \"content\": \"댓글추가\"\r\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:3001/v1/posts/:postId/comments","host":["http://localhost:3001"],"path":["v1","posts",":postId","comments"],"variable":[{"key":"postId","value":"618eb2422ef88e89f24fea4c"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": {\n        \"_id\": \"61978a1fff6757f888929da6\",\n        \"content\": \"댓글추가\",\n        \"createdAt\": \"2021-11-19T11:27:27.684Z\",\n        \"updatedAt\": \"2021-11-19T11:27:27.684Z\",\n        \"user\": {\n            \"_id\": \"6195daa5856537d371ba17f7\",\n            \"username\": \"codingegg\",\n            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n        }\n    }\n}"}],"_postman_id":"4058de0b-974b-4ca1-8ebf-665a3d091bd8"},{"name":"댓글 삭제","id":"b0e2a1c4-e820-4633-8276-313a921bb169","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n    \"userID\": \"6195daa5856537d371ba17f7\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/posts/:post_id/comments/:comment_id","description":"<h2 id=\"댓글-삭제-api\">댓글 삭제 API</h2>\n<h4 id=\"request\">request</h4>\n<h4 id=\"response\">response</h4>\n","urlObject":{"path":["v1","posts",":post_id","comments",":comment_id"],"host":["http://localhost:3001"],"query":[],"variable":[{"description":{"content":"<p>포스트 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"61951fc95c66586c0d137f28","key":"post_id"},{"description":{"content":"<p>댓글 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"61978a1fff6757f888929da6","key":"comment_id"}]}},"response":[{"id":"3b0f0303-9a92-4e8f-88d7-5b649907706c","name":"댓글 삭제","originalRequest":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n    \"userID\": \"6189fe77e0b6fb7c282d505f\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:3001/v1/posts/:post_id/comments/:comment_id","host":["http://localhost:3001"],"path":["v1","posts",":post_id","comments",":comment_id"],"variable":[{"key":"post_id","value":"618be55302dd53ca3cb0b559","description":"포스트 고유 식별자"},{"key":"comment_id","value":"61910bf0fa4a938e3a306ad0","description":"댓글 고유 식별자"}]}},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\"\n}"}],"_postman_id":"b0e2a1c4-e820-4633-8276-313a921bb169"},{"name":"댓글 좋아요","id":"e502df5d-7615-489b-a9cb-8b71e7e56738","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"userID\": \"6195daa5856537d371ba17f7\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/posts/:post_id/comments/:comment_id/likes","description":"<h2 id=\"post-의-댓글에-대하여-좋아요-추가-api\">post 의 댓글에 대하여 좋아요 추가 API</h2>\n<h4 id=\"request\">request</h4>\n<ul>\n<li>userID: String (user id)</li>\n</ul>\n<h4 id=\"response\">response</h4>\n<ul>\n<li>likeID: Int (like id)</li>\n</ul>\n","urlObject":{"path":["v1","posts",":post_id","comments",":comment_id","likes"],"host":["http://localhost:3001"],"query":[],"variable":[{"description":{"content":"<p>포스트 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"6196425d85cd9fec558b6524","key":"post_id"},{"description":{"content":"<p>댓글 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"6196445f85cd9fec558b6dd1","key":"comment_id"}]}},"response":[{"id":"ae80e42d-02ee-439d-81e4-90c414f4d2b0","name":"댓글 좋아요","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"userID\": \"6189fe77e0b6fb7c282d505f\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:3001/v1/posts/:post_id/comments/:comment_id/likes","host":["http://localhost:3001"],"path":["v1","posts",":post_id","comments",":comment_id","likes"],"variable":[{"key":"post_id","value":"618be55302dd53ca3cb0b559","description":"포스트 고유 식별자"},{"key":"comment_id","value":"61910bf0fa4a938e3a306ad0","description":"댓글 고유 식별자"}]}},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": {\n        \"_id\": \"61978aaa252efc2605062597\"\n    }\n}"}],"_postman_id":"e502df5d-7615-489b-a9cb-8b71e7e56738"},{"name":"댓글 좋아요 취소","id":"7de40cc9-8102-446a-809a-8cc87f88add6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n    \"userID\": \"6189fe77e0b6fb7c282d505f\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/posts/:post_id/comments/:comment_id/likes/:like_id","urlObject":{"path":["v1","posts",":post_id","comments",":comment_id","likes",":like_id"],"host":["http://localhost:3001"],"query":[],"variable":[{"description":{"content":"<p>포스트 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"6191b46f1a44e63a4b93a73d","key":"post_id"},{"description":{"content":"<p>댓글 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"61926ec538bdbd70841832e6","key":"comment_id"},{"description":{"content":"<p>좋아요 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"6194931f252efc260502646f","key":"like_id"}]}},"response":[{"id":"9d728c05-de3f-423c-ad0f-2a02b6d45eb4","name":"댓글 좋아요 취소","originalRequest":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n    \"userID\": \"6189fe77e0b6fb7c282d505f\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:3001/v1/posts/:post_id/comments/:comment_id/likes/:like_id","host":["http://localhost:3001"],"path":["v1","posts",":post_id","comments",":comment_id","likes",":like_id"],"variable":[{"key":"post_id","value":"618bc757df50c33c3bb28fc4","description":"포스트 고유 식별자"},{"key":"comment_id","value":"61910bf0fa4a938e3a306ad0","description":"댓글 고유 식별자"},{"key":"like_id","value":"61910c0e252efc2605fbf2cd","description":"좋아요 고유 식별자"}]}},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\"\n}"}],"_postman_id":"7de40cc9-8102-446a-809a-8cc87f88add6"},{"name":"포스트 삭제","id":"fe89d4f3-c589-4866-aacc-3c60116a270f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n    \"userID\": \"6194d078928b431f065e0997\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/posts/:post_id","urlObject":{"path":["v1","posts",":post_id"],"host":["http://localhost:3001"],"query":[],"variable":[{"type":"any","value":"619b4052d0880e944c5fb873","key":"post_id"}]}},"response":[{"id":"0c016b8f-85e4-4b4c-a6ca-d6d1ff27d818","name":"포스트 삭제","originalRequest":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n    \"userID\": \"6189fe77e0b6fb7c282d505f\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:3001/v1/posts/:post_id","host":["http://localhost:3001"],"path":["v1","posts",":post_id"],"variable":[{"key":"post_id","value":"61911e29eb27399661e66591"}]}},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\"\n}"}],"_postman_id":"fe89d4f3-c589-4866-aacc-3c60116a270f"}],"id":"6a9eeacc-cc1f-41f5-8ea8-7700c6c3b41f","_postman_id":"6a9eeacc-cc1f-41f5-8ea8-7700c6c3b41f","description":""},{"name":"초기유입","item":[{"name":"팔로우 랜덤 추천","id":"5354c46f-8f6d-4e9e-938c-74911d2ceae7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[],"url":"http://localhost:3001/v1/users/:user_id/suggestions","description":"<h2 id=\"초기유입시-랜덤으로-추천되는-사용자-리스트를-가져오는-api\">초기유입시 랜덤으로 추천되는 사용자 리스트를 가져오는 API</h2>\n<h4 id=\"request\">request</h4>\n<h4 id=\"response\">response</h4>\n<ul>\n<li>profileImage: String (url)</li>\n<li>username: String</li>\n<li>userId: String (user id)</li>\n</ul>\n","urlObject":{"path":["v1","users",":user_id","suggestions"],"host":["http://localhost:3001"],"query":[],"variable":[{"description":{"content":"<p>유저 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"6195daa5856537d371ba17f7","key":"user_id"}]}},"response":[{"id":"6f3ca930-6a26-4c18-a90c-609cc166000a","name":"팔로우 랜덤 추천","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/users/:user_id/suggestions","host":["http://localhost:3001"],"path":["v1","users",":user_id","suggestions"],"variable":[{"key":"user_id","value":"6189fe77e0b6fb7c282d505f","description":"유저 고유 식별자"}]}},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": [\n        {\n            \"_id\": \"619662746c117dac037ccb08\",\n            \"username\": \"hello_world\",\n            \"profileImage\": \"/images/default_profile_image.jpg\"\n        },\n        {\n            \"_id\": \"6196630d6c117dac037ccb12\",\n            \"username\": \"mark_elliot_zuckerberg\",\n            \"profileImage\": \"/images/default_profile_image.jpg\"\n        },\n        {\n            \"_id\": \"619662666c117dac037ccb07\",\n            \"username\": \"zigae\",\n            \"profileImage\": \"/images/default_profile_image.jpg\"\n        },\n        {\n            \"_id\": \"6194d078928b431f065e0997\",\n            \"username\": \"kdmin0211\",\n            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/3b7vc76ObUoOEXwo9ho6T.png\"\n        },\n        {\n            \"_id\": \"6197695685cd9fec558bc47a\",\n            \"username\": \"shinn338\",\n            \"profileImage\": \"/images/default_profile_image.jpg\"\n        },\n        {\n            \"_id\": \"61973c7a85cd9fec558bc191\",\n            \"username\": \"hi\",\n            \"profileImage\": \"/images/default_profile_image.jpg\"\n        },\n        {\n            \"_id\": \"619662a76c117dac037ccb0e\",\n            \"username\": \"cokiri\",\n            \"profileImage\": \"/images/default_profile_image.jpg\"\n        },\n        {\n            \"_id\": \"6196628f6c117dac037ccb0d\",\n            \"username\": \"dongmindev\",\n            \"profileImage\": \"/images/default_profile_image.jpg\"\n        },\n        {\n            \"_id\": \"6194d21006d472d1f4839373\",\n            \"username\": \"hyunmindev\",\n            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/_8yfBQfhigxB22IiI8Zd9.png\"\n        },\n        {\n            \"_id\": \"619662be6c117dac037ccb10\",\n            \"username\": \"zooooooooooooooooom\",\n            \"profileImage\": \"/images/default_profile_image.jpg\"\n        },\n        {\n            \"_id\": \"6196620a6c117dac037ccb03\",\n            \"username\": \"developer\",\n            \"profileImage\": \"/images/default_profile_image.jpg\"\n        },\n        {\n            \"_id\": \"619662506c117dac037ccb06\",\n            \"username\": \"naver_connect_official\",\n            \"profileImage\": \"/images/default_profile_image.jpg\"\n        },\n        {\n            \"_id\": \"6196947e85cd9fec558bb672\",\n            \"username\": \"1231\",\n            \"profileImage\": \"/images/default_profile_image.jpg\"\n        },\n        {\n            \"_id\": \"6194d259dd93761039d5666f\",\n            \"username\": \"beomseok\",\n            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/Sk5wcHvx9-ywPmwMhScv-.jpg\"\n        },\n        {\n            \"_id\": \"6196281785cd9fec558b5d1a\",\n            \"username\": \"admin\",\n            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/ZjGsFMLTvibUnvqAuiJJ2.png\"\n        },\n        {\n            \"_id\": \"619662466c117dac037ccb05\",\n            \"username\": \"kakao_official\",\n            \"profileImage\": \"/images/default_profile_image.jpg\"\n        },\n        {\n            \"_id\": \"619662e16c117dac037ccb11\",\n            \"username\": \"bill_gates\",\n            \"profileImage\": \"/images/default_profile_image.jpg\"\n        },\n        {\n            \"_id\": \"619662396c117dac037ccb04\",\n            \"username\": \"naver_official\",\n            \"profileImage\": \"/images/default_profile_image.jpg\"\n        },\n        {\n            \"_id\": \"619662b26c117dac037ccb0f\",\n            \"username\": \"cocoo_official\",\n            \"profileImage\": \"/images/default_profile_image.jpg\"\n        }\n    ]\n}"}],"_postman_id":"5354c46f-8f6d-4e9e-938c-74911d2ceae7"},{"name":"타임라인 팔로우 게시글 보기","id":"07f4d510-746f-48b7-8890-b21b44810bf8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/posts?user_id=1","urlObject":{"path":["v1","posts"],"host":["http://localhost:3001"],"query":[{"description":{"content":"<p>유저 고유 식별자</p>\n","type":"text/plain"},"key":"user_id","value":"1"}],"variable":[]}},"response":[],"_postman_id":"07f4d510-746f-48b7-8890-b21b44810bf8"},{"name":"타임라인 미리보기 공식계정, 실시간 인기글","id":"352a794f-e603-4945-b594-d55d910b233c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/posts/samples?user_id=1","urlObject":{"path":["v1","posts","samples"],"host":["http://localhost:3001"],"query":[{"description":{"content":"<p>유저 고유 식별자</p>\n","type":"text/plain"},"key":"user_id","value":"1"}],"variable":[]}},"response":[],"_postman_id":"352a794f-e603-4945-b594-d55d910b233c"}],"id":"d0861f5c-1c7b-4f82-b3c1-217168f3f733","_postman_id":"d0861f5c-1c7b-4f82-b3c1-217168f3f733","description":""},{"name":"프로필","item":[{"name":"프로필 보기","id":"352447a1-2861-4f0a-aaec-8fb2a0485776","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/users?username=COCOO","urlObject":{"path":["v1","users"],"host":["http://localhost:3001"],"query":[{"key":"username","value":"COCOO"}],"variable":[]}},"response":[{"id":"ade7ed4f-2f9c-4c09-a158-77672df4897b","name":"프로필 보기","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/users?username=testUser","host":["http://localhost:3001"],"path":["v1","users"],"query":[{"key":"username","value":"testUser"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"_id\": \"6189fe77e0b6fb7c282d505f\",\n    \"username\": \"TESTUSERNAME\",\n    \"isRegistered\": true,\n    \"name\": \"\",\n    \"bio\": \"나는 김동민입니다.\",\n    \"postCount\": 1,\n    \"followCount\": 1,\n    \"followerCount\": 1\n}"}],"_postman_id":"352447a1-2861-4f0a-aaec-8fb2a0485776"},{"name":"팔로우 하기","id":"06cd55d0-beec-4f88-a3c3-6d76e626f360","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"userID\": \"6189fe77e0b6fb7c282d505f\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/users/:user_id/follows","description":"<h2 id=\"특정-사용자에-대하여-팔로우-추가-api\">특정 사용자에 대하여 팔로우 추가 API</h2>\n<h4 id=\"request\">request</h4>\n<ul>\n<li>userID: String (user id)</li>\n</ul>\n<h4 id=\"response\">response</h4>\n","urlObject":{"path":["v1","users",":user_id","follows"],"host":["http://localhost:3001"],"query":[],"variable":[{"description":{"content":"<p>팔로우 대상 유저 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"6194d078928b431f065e0997","key":"user_id"}]}},"response":[{"id":"2c995a70-df72-406b-a6d5-364b2f7d9f2f","name":"팔로우 하기","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"userID\": \"String (user id)\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:3001/v1/users/:user_id/follows","host":["http://localhost:3001"],"path":["v1","users",":user_id","follows"],"variable":[{"key":"user_id","value":"1","description":"팔로우 대상 유저 고유 식별자"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\"\n}"}],"_postman_id":"06cd55d0-beec-4f88-a3c3-6d76e626f360"},{"name":"팔로우 보기","id":"fd36c7a3-933e-4277-af8f-09e153f7558d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/users/:user_id/follows","description":"<h2 id=\"특정-사용자의-팔로우들의-리스트를-요청하는-api\">특정 사용자의 팔로우들의 리스트를 요청하는 API</h2>\n<h4 id=\"request\">request</h4>\n<h4 id=\"response\">response</h4>\n<ul>\n<li>Object[]<ul>\n<li>userID: String (user id)</li>\n<li>image: String (url)</li>\n<li>username: String</li>\n</ul>\n</li>\n</ul>\n","urlObject":{"path":["v1","users",":user_id","follows"],"host":["http://localhost:3001"],"query":[],"variable":[{"description":{"content":"<p>유저 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"6189fe77e0b6fb7c282d505f","key":"user_id"}]}},"response":[{"id":"ed0f1e96-5e98-44b7-88f9-c7bb044f0de9","name":"팔로우 보기","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/users/:user_id/follows","host":["http://localhost:3001"],"path":["v1","users",":user_id","follows"],"variable":[{"key":"user_id","value":"1","description":"유저 고유 식별자"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"[\n    {\n        \"_id\": \"618a30893f3e360fa260e046\",\n        \"username\": \"hyunmindev\",\n        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/h7lYcpyxF_RWNaiaxp9lk.png\"\n    }\n]"}],"_postman_id":"fd36c7a3-933e-4277-af8f-09e153f7558d"},{"name":"팔로워 보기","id":"596834fc-c68c-43d4-88fb-a901c19a6bba","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/users/:user_id/followers","description":"<h2 id=\"특정-사용자의-팔로워들의-리스트를-요청하는-api\">특정 사용자의 팔로워들의 리스트를 요청하는 API</h2>\n<h4 id=\"request\">request</h4>\n<h4 id=\"response\">response</h4>\n<ul>\n<li>Object[]<ul>\n<li>userID: String (user id)</li>\n<li>image: String (url)</li>\n<li>username: String</li>\n</ul>\n</li>\n</ul>\n","urlObject":{"path":["v1","users",":user_id","followers"],"host":["http://localhost:3001"],"query":[],"variable":[{"type":"any","value":"6189fe77e0b6fb7c282d505f","key":"user_id"}]}},"response":[{"id":"0774a64c-e9a5-4e18-b9e9-40435f612326","name":"팔로워 보기","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/users/:user_id/followers","host":["http://localhost:3001"],"path":["v1","users",":user_id","followers"],"variable":[{"key":"user_id","value":"618a191bd6a74ab0da820475"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"[\n    {\n        \"_id\": \"6189fe77e0b6fb7c282d505f\",\n        \"username\": \"urlSafeUsername\"\n    }\n]"}],"_postman_id":"596834fc-c68c-43d4-88fb-a901c19a6bba"},{"name":"팔로우 취소","id":"935d036e-0218-4334-b069-71c7197cbdf5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"DELETE","header":[{"key":"","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"userID\": \"6189fe77e0b6fb7c282d505f\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/users/:user_id/follows","urlObject":{"path":["v1","users",":user_id","follows"],"host":["http://localhost:3001"],"query":[],"variable":[{"type":"any","value":"618a30893f3e360fa260e046","key":"user_id"}]}},"response":[{"id":"d484d97b-042e-4385-b79a-641ffd5b3157","name":"팔로우 취소","originalRequest":{"method":"DELETE","header":[],"url":"http://localhost:3001/v1/users/618a191bd6a74ab0da820475/follows"},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\"\n}"}],"_postman_id":"935d036e-0218-4334-b069-71c7197cbdf5"},{"name":"사용자 포스트 모아보기","id":"405170c9-0594-427f-a792-0254050d64a1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/users/:user_id/posts?cursor=0","urlObject":{"path":["v1","users",":user_id","posts"],"host":["http://localhost:3001"],"query":[{"key":"cursor","value":"0"}],"variable":[{"type":"any","value":"6195daa5856537d371ba17f7","key":"user_id"}]}},"response":[{"id":"c76166f8-40ec-4336-9141-89c8b1965cc1","name":"사용자 포스트 모아보기","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/users/:user_id/posts?cursor=0","host":["http://localhost:3001"],"path":["v1","users",":user_id","posts"],"query":[{"key":"cursor","value":"0"}],"variable":[{"key":"user_id","value":"6195daa5856537d371ba17f7"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"nextCursor\": 3,\n    \"data\": [\n        {\n            \"_id\": \"619dbfd42f168789f4599c26\",\n            \"content\": \"이번 로고인데 어때요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요\",\n            \"tags\": [],\n            \"type\": \"normal\",\n            \"createdAt\": \"2021-11-24T04:30:12.706Z\",\n            \"updatedAt\": \"2021-11-24T04:30:12.706Z\",\n            \"user\": {\n                \"_id\": \"6195daa5856537d371ba17f7\",\n                \"username\": \"codingegg\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n            },\n            \"comments\": [\n                {\n                    \"_id\": \"619dc0232f168789f4599cc1\",\n                    \"content\": \"댓글 발싸에요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요요\",\n                    \"createdAt\": \"2021-11-24T04:31:31.009Z\",\n                    \"updatedAt\": \"2021-11-24T04:31:31.009Z\",\n                    \"user\": {\n                        \"_id\": \"6195daa5856537d371ba17f7\",\n                        \"username\": \"codingegg\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                    },\n                    \"likes\": [\n                        {\n                            \"_id\": \"619dcc19252efc2605388221\",\n                            \"createdAt\": \"2021-11-24T05:22:33.227Z\",\n                            \"user\": {\n                                \"_id\": \"6194d078928b431f065e0997\",\n                                \"username\": \"dmin02111\",\n                                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/IMNhw6aSsPZW9V8cIw93A.png\"\n                            }\n                        },\n                        {\n                            \"_id\": \"61a498a4252efc26054c3a30\",\n                            \"createdAt\": \"2021-11-29T09:08:52.905Z\",\n                            \"user\": {\n                                \"_id\": \"619f89055464777d0bac7e12\",\n                                \"username\": \"kakao_dongmin\",\n                                \"profileImage\": \"/images/default_profile_image.jpg\"\n                            }\n                        },\n                        {\n                            \"_id\": \"61a61da2252efc2605563cde\",\n                            \"createdAt\": \"2021-11-30T12:48:34.272Z\",\n                            \"user\": {\n                                \"_id\": \"6195daa5856537d371ba17f7\",\n                                \"username\": \"codingegg\",\n                                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                            }\n                        }\n                    ]\n                },\n                {\n                    \"_id\": \"619dc0442f168789f4599d10\",\n                    \"content\": \"정상 댓글 발싸!\",\n                    \"createdAt\": \"2021-11-24T04:32:04.305Z\",\n                    \"updatedAt\": \"2021-11-24T04:32:04.305Z\",\n                    \"user\": {\n                        \"_id\": \"6195daa5856537d371ba17f7\",\n                        \"username\": \"codingegg\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"619dcc216690f77cdc6bf207\",\n                    \"content\": \"정상이야\",\n                    \"createdAt\": \"2021-11-24T05:22:41.620Z\",\n                    \"updatedAt\": \"2021-11-24T05:22:41.620Z\",\n                    \"user\": {\n                        \"_id\": \"6195daa5856537d371ba17f7\",\n                        \"username\": \"codingegg\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"619dcc51f38cae552e708017\",\n                    \"content\": \"더 길쭉한 댓글 발싸요용요요요요요요요용요요요요요요요요요용요용요요요요요요요용요요요요요요요요요용요용요요요요요요요용요요요요요요요요요용요용요요요요요요요용요요요요요요요요요용요용요요요요요요요용요요요요요요요요요용요용요요요요요요요용요요요요요요요요요용요용요요요요요요요용요요요요요요요요요용요용요요요요요요요용요요요요요요요요요용요용요요요요요요요용요요요요요요요요요용요용요요요요요요요용요요요요요요요요요용요용요요요요요요요용요요요요요요요요요용요용요요요요요요요용요요요요요요요요요용요용요요요요요요요용요요요요요요요요요용요용요요요요요요요용요요요요요요요요요용요용요요요요요요요용요요요요요요요요요용요용요요요요요요요용요요요요요요요요요용\",\n                    \"createdAt\": \"2021-11-24T05:23:29.172Z\",\n                    \"updatedAt\": \"2021-11-24T05:23:29.172Z\",\n                    \"user\": {\n                        \"_id\": \"6194d078928b431f065e0997\",\n                        \"username\": \"dmin02111\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/IMNhw6aSsPZW9V8cIw93A.png\"\n                    },\n                    \"likes\": [\n                        {\n                            \"_id\": \"61a03e58252efc26053c68c1\",\n                            \"createdAt\": \"2021-11-26T01:54:32.480Z\",\n                            \"user\": {\n                                \"_id\": \"6194d21006d472d1f4839373\",\n                                \"username\": \"hyunmindev\",\n                                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                            }\n                        }\n                    ]\n                },\n                {\n                    \"_id\": \"619dd0495359104774126cd7\",\n                    \"content\": \"아 뭐하세요 다들 ㅋㅋㅋㅋ\",\n                    \"createdAt\": \"2021-11-24T05:40:25.819Z\",\n                    \"updatedAt\": \"2021-11-24T05:40:25.819Z\",\n                    \"user\": {\n                        \"_id\": \"6194d21006d472d1f4839373\",\n                        \"username\": \"hyunmindev\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"619f5b17f927bb542f49d457\",\n                    \"content\": \"g\",\n                    \"createdAt\": \"2021-11-25T09:44:55.110Z\",\n                    \"updatedAt\": \"2021-11-25T09:44:55.110Z\",\n                    \"user\": {\n                        \"_id\": \"6195daa5856537d371ba17f7\",\n                        \"username\": \"codingegg\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                    },\n                    \"likes\": []\n                }\n            ],\n            \"likes\": [\n                {\n                    \"_id\": \"619e183a252efc26053921bf\",\n                    \"createdAt\": \"2021-11-24T10:47:23.667Z\",\n                    \"user\": {\n                        \"_id\": \"6195daa5856537d371ba17f7\",\n                        \"username\": \"codingegg\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                    }\n                }\n            ],\n            \"images\": [\n                {\n                    \"_id\": \"619dbfd42f168789f4599c29\",\n                    \"url\": \"https://kr.object.ncloudstorage.com/cocoo/posts/sLCmywrxoe0YBOIYvKmTW.png\"\n                }\n            ]\n        },\n        {\n            \"_id\": \"6196471a85cd9fec558b7cce\",\n            \"content\": \"개발 개많이 했쥬\",\n            \"tags\": [],\n            \"type\": \"normal\",\n            \"createdAt\": \"2021-11-18T12:29:14.646Z\",\n            \"updatedAt\": \"2021-11-18T12:29:14.646Z\",\n            \"user\": {\n                \"_id\": \"6195daa5856537d371ba17f7\",\n                \"username\": \"codingegg\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n            },\n            \"comments\": [\n                {\n                    \"_id\": \"619665e085cd9fec558ba543\",\n                    \"content\": \"개발 열심히 하시네요!!!\",\n                    \"createdAt\": \"2021-11-18T14:40:32.903Z\",\n                    \"updatedAt\": \"2021-11-18T14:40:32.903Z\",\n                    \"user\": {\n                        \"_id\": \"6194d078928b431f065e0997\",\n                        \"username\": \"dmin02111\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/IMNhw6aSsPZW9V8cIw93A.png\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"619724ee85cd9fec558bbc14\",\n                    \"content\": \"으\",\n                    \"createdAt\": \"2021-11-19T04:15:42.370Z\",\n                    \"updatedAt\": \"2021-11-19T04:15:42.370Z\",\n                    \"user\": {\n                        \"_id\": \"6196281785cd9fec558b5d1a\",\n                        \"username\": \"admin\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/ZjGsFMLTvibUnvqAuiJJ2.png\"\n                    },\n                    \"likes\": []\n                }\n            ],\n            \"likes\": [\n                {\n                    \"_id\": \"619665e2252efc2605054330\",\n                    \"createdAt\": \"2021-11-18T14:40:34.563Z\",\n                    \"user\": {\n                        \"_id\": \"6194d078928b431f065e0997\",\n                        \"username\": \"dmin02111\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/IMNhw6aSsPZW9V8cIw93A.png\"\n                    }\n                }\n            ],\n            \"images\": [\n                {\n                    \"_id\": \"6196471a85cd9fec558b7cd1\",\n                    \"url\": \"https://kr.object.ncloudstorage.com/cocoo/posts/qMtGW74y5_G11ho9ea05a.PNG\"\n                }\n            ]\n        },\n        {\n            \"_id\": \"6196467285cd9fec558b7a27\",\n            \"content\": \"아 개발 너무 힘들어.......\\n살려줘잉........\",\n            \"tags\": [],\n            \"type\": \"normal\",\n            \"createdAt\": \"2021-11-18T12:26:26.485Z\",\n            \"updatedAt\": \"2021-11-18T12:26:26.485Z\",\n            \"user\": {\n                \"_id\": \"6195daa5856537d371ba17f7\",\n                \"username\": \"codingegg\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n            },\n            \"comments\": [\n                {\n                    \"_id\": \"619664e585cd9fec558b9c9d\",\n                    \"content\": \"너무 힘들어보여요!!!\",\n                    \"createdAt\": \"2021-11-18T14:36:21.765Z\",\n                    \"updatedAt\": \"2021-11-18T14:36:21.765Z\",\n                    \"user\": {\n                        \"_id\": \"6194d078928b431f065e0997\",\n                        \"username\": \"dmin02111\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/IMNhw6aSsPZW9V8cIw93A.png\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"61a5d5248198d1988e3d151f\",\n                    \"content\": \"너무 안 힘들어보여요!!!\",\n                    \"createdAt\": \"2021-11-30T07:39:16.066Z\",\n                    \"updatedAt\": \"2021-11-30T07:39:16.066Z\",\n                    \"user\": {\n                        \"_id\": \"6194d21006d472d1f4839373\",\n                        \"username\": \"hyunmindev\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                    },\n                    \"likes\": []\n                }\n            ],\n            \"likes\": [],\n            \"images\": [\n                {\n                    \"_id\": \"6196467285cd9fec558b7a2a\",\n                    \"url\": \"https://kr.object.ncloudstorage.com/cocoo/posts/g5znoNQIOts52zCWXylOb.PNG\"\n                }\n            ]\n        }\n    ]\n}"}],"_postman_id":"405170c9-0594-427f-a792-0254050d64a1"}],"id":"f2604568-594f-4374-bef0-2ef3db0762b8","_postman_id":"f2604568-594f-4374-bef0-2ef3db0762b8","description":""},{"name":"대쉬보드","item":[{"name":"대시보드 히스토리 입력","id":"fecba655-155e-432f-805f-ac2dae5af102","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"content\": \"입학\",\n    \"date\": \"2017-03\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/users/:user_id/dashboard/histories","urlObject":{"path":["v1","users",":user_id","dashboard","histories"],"host":["http://localhost:3001"],"query":[],"variable":[{"type":"any","value":"6194d078928b431f065e0997","key":"user_id"}]}},"response":[{"id":"2b674867-e42e-498e-945d-35e4213e9d47","name":"대시보드 히스토리 입력","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"content\": \"입학\",\n    \"date\": \"2017-03\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:3001/v1/users/:user_id/dashboard/histories","host":["http://localhost:3001"],"path":["v1","users",":user_id","dashboard","histories"],"variable":[{"key":"user_id","value":"6194d078928b431f065e0997"}]}},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\n    \"userID\": \"6194d078928b431f065e0997\",\n    \"content\": \"입학\",\n    \"date\": \"2017-03-01T00:00:00.000Z\",\n    \"_id\": \"61990a80890494def1e2cf0c\"\n}"}],"_postman_id":"fecba655-155e-432f-805f-ac2dae5af102"},{"name":"대시보드 깃허브 레파지토리 삭제","id":"eb13bd46-61da-42f0-971c-2939dd6eba77","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\r\n    \"userID\": \"6195daa5856537d371ba17f7\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/users/:user_id/dashboard/repositories/:repo_name","urlObject":{"path":["v1","users",":user_id","dashboard","repositories",":repo_name"],"host":["http://localhost:3001"],"query":[],"variable":[{"description":{"content":"<p>유저 _id</p>\n","type":"text/plain"},"type":"any","value":"6195daa5856537d371ba17f7","key":"user_id"},{"type":"any","value":"Flutter_Study","key":"repo_name"}]}},"response":[{"id":"201560d4-96c0-4e4e-a022-6269028fdef0","name":"대시보드 깃허브 레파지토리 삭제","originalRequest":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\r\n    \"userID\": \"6195daa5856537d371ba17f7\"\r\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:3001/v1/users/:user_id/dashboard/repositories/:repo_name","host":["http://localhost:3001"],"path":["v1","users",":user_id","dashboard","repositories",":repo_name"],"variable":[{"key":"user_id","value":"6195daa5856537d371ba17f7","description":"유저 _id"},{"key":"repo_name","value":"Flutter_Study"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\"\n}"}],"_postman_id":"eb13bd46-61da-42f0-971c-2939dd6eba77"},{"name":"대시보드에 연동된 깃허브 레파지토리","id":"2d159ea1-9ebf-4f9f-8d3e-1e7bb199cb9f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/users/:user_id/dashboard/repositories","urlObject":{"path":["v1","users",":user_id","dashboard","repositories"],"host":["http://localhost:3001"],"query":[],"variable":[{"description":{"content":"<p>유저 _id</p>\n","type":"text/plain"},"type":"any","value":"6195daa5856537d371ba17f7","key":"user_id"}]}},"response":[{"id":"8a2c4fce-442c-4b78-8ef3-d3123a70e87e","name":"대시보드에 연동된 깃허브 레파지토리","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/users/:user_id/dashboard/repositories","host":["http://localhost:3001"],"path":["v1","users",":user_id","dashboard","repositories"],"variable":[{"key":"user_id","value":"6195daa5856537d371ba17f7","description":"유저 _id"}]}},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\r\n    \"code\": \"Success\",\r\n    \"data\": [\r\n        {\r\n            \"_id\": \"61989ec88afa0cecd0df8605\",\r\n            \"userID\": \"6195daa5856537d371ba17f7\",\r\n            \"repoName\": \"WEB26-COKIRI\",\r\n            \"repoUrl\": \"https://github.com/youjeonghan/WEB26-COKIRI\",\r\n            \"startCount\": 0,\r\n            \"content\": \"<div align=\\\"center\\\">\\n    <a href=\\\"https://github.com/boostcampwm-2021/WEB26-COKIRI\\\">\\n    <img width=\\\"500\\\" src=\\\"https://user-images.githubusercontent.com/74395748/139043672-3e2cd88c-35e4-4d5f-8ca1-99766b1e4496.png\\\" />\\n    </a>\\n</div>\\n\\n\\n<p align=\\\"center\\\">\\n    <a href=\\\"/\\\"><img src=\\\"https://img.shields.io/badge/node-16.13.0-9181d6?logo=node.js\\\" alt=\\\"\\\"></a>\\n    <a href=\\\"/\\\"><img src=\\\"https://img.shields.io/badge/npm-8.1.0-9181D6?logo=npm\\\" alt=\\\"\\\"></a>\\n    <a href=\\\"/\\\"><img src=\\\"https://img.shields.io/badge/express-4.17.1-9181D6?logo=express\\\" alt=\\\"\\\"></a>\\n    <a href=\\\"/\\\"><img src=\\\"https://img.shields.io/badge/ubuntu-18.04-9181D6?logo=ubuntu\\\" alt=\\\"\\\"></a>\\n    <a href=\\\"/\\\"><img src=\\\"https://img.shields.io/badge/react-17.0.2-9181D6?logo=react\\\" alt=\\\"\\\"></a>\\n    <br>\\n    <a href=\\\"/\\\"><img src=\\\"https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2Fboostcampwm-2021%2FWEB26-COKIRI&count_bg=%239181D6&title_bg=%23555555&icon=&icon_color=%239181D6&title=&edge_flat=false\\\"/></a>\\n</p>\\n\\n<div align=\\\"center\\\">\\n<h2>\\n개발, 이제 관심을 받다.\\n</h2>\\n\\n<p>일상을 쉽게 공유하지 못하는 개발자를 위한 SNS.<br>\\n몇번의 클릭으로 다른 개발자의 흔적을 볼 수 있다.<br>\\n그리고<br>\\n코쿠(COCOO)는 개발자의 흩어진 노력을 모아준다.</p>\\n\\n</div>\\n\\n## 💧 링크\\n\\n- [배포](/)\\n- [데모 영상](/)\\n- [노션](https://pool-storm-1a3.notion.site/b1de384e2f8c47948ee4b347bda6de04)\\n- [디자인](https://miro.com/app/board/o9J_lnmq-7Y=/?invite_link_id=740345289660)\\n- [기획](https://miro.com/app/board/o9J_lnnTacc=/?invite_link_id=874331551230)\\n- [백로그](https://docs.google.com/spreadsheets/d/14WwTBta7pvPAq2TPi0Rga9ThRRph-Lt7dCHPDHVWlRo/edit?usp=sharing)\\n\\n\\n\\n## ❄️ 기능\\n\\n\\n## 아키텍쳐\\n![아키텍쳐 jpg](https://user-images.githubusercontent.com/34956768/139275197-360f1438-511c-428f-93b3-589ea978de29.jpg)\\n\\n## 스택\\n![스택1](https://user-images.githubusercontent.com/34956768/139271396-dd0cda8b-b31a-4690-a8dd-0565fe3ec2f6.jpg)\\n\\n\\n## 🧊 개발자\\n\\n|     정현민    |     유정한    |    김동민   |     한범석    |\\n| :---------: | :---------: | :--------: | :---------: |\\n|  **티라노**   |   **먼치킨**  |  **고라니** |  **타이거**   |\\n| @hyunmindev | @youjeonghan | @dmin0211 | @beomseok37 |\\n| <img width=200 src=\\\"https://user-images.githubusercontent.com/34956768/139091226-e7e7aa3b-785e-4fce-bec2-7b0178820aa5.png\\\"> | <img width=200 src=\\\"https://user-images.githubusercontent.com/34956768/139091573-17ca9a01-3a0a-448f-8203-faedc34aa2b6.png\\\"> | <img width=200 src=\\\"https://user-images.githubusercontent.com/34956768/139091567-646b32b0-a856-4e6f-9e18-3c62039f99fe.png\\\">| <img width=200 src=\\\"https://user-images.githubusercontent.com/34956768/139091533-cc71d3ea-4c68-4234-bba2-ec83ca74d94a.png\\\"> |\\n\",\r\n            \"languageInfo\": {\r\n                \"TypeScript\": 89.04,\r\n                \"CSS\": 8.3,\r\n                \"JavaScript\": 2.66\r\n            },\r\n            \"createdAt\": \"2021-11-20T07:07:52.789Z\",\r\n            \"updatedAt\": \"2021-11-20T07:07:52.789Z\"\r\n        }\r\n    ]\r\n}"}],"_postman_id":"2d159ea1-9ebf-4f9f-8d3e-1e7bb199cb9f"},{"name":"깃허브 전체 사용언어 통계 가져오기","id":"9b56a719-c758-490a-a69e-9d0e94f84d3e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/users/:user_id/dashboard/repositories/languages","urlObject":{"path":["v1","users",":user_id","dashboard","repositories","languages"],"host":["http://localhost:3001"],"query":[],"variable":[{"type":"any","value":"6195daa5856537d371ba17f7","key":"user_id"}]}},"response":[{"id":"0e1d3f7d-5874-42c2-b63c-7b612231562c","name":"깃허브 전체 사용언어 통계 가져오기","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/users/:user_id/dashboard/repositories/languages","host":["http://localhost:3001"],"path":["v1","users",":user_id","dashboard","repositories","languages"],"variable":[{"key":"user_id","value":"6195daa5856537d371ba17f7"}]}},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\r\n    \"code\": \"Success\",\r\n    \"data\": {\r\n        \"TypeScript\": 29.68,\r\n        \"CSS\": 2.77,\r\n        \"JavaScript\": 0.89,\r\n        \"Python\": 33.33,\r\n        \"Dart\": 21,\r\n        \"HTML\": 10.68,\r\n        \"Swift\": 1.16,\r\n        \"Kotlin\": 0.38,\r\n        \"Objective-C\": 0.11\r\n    }\r\n}"}],"_postman_id":"9b56a719-c758-490a-a69e-9d0e94f84d3e"},{"name":"깃허브 전체 사용언어 통계 연동 갱신","id":"05ca71b4-036e-46e0-a2a4-0cb9391fc729","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"PUT","header":[],"url":"http://localhost:3001/v1/users/:user_id/dashboard/repositories/languages","description":"<p>사용자의 깃헙 유저네임을 가져와 데이터 갱신</p>\n","urlObject":{"path":["v1","users",":user_id","dashboard","repositories","languages"],"host":["http://localhost:3001"],"query":[],"variable":[{"type":"any","value":"6195daa5856537d371ba17f7","key":"user_id"}]}},"response":[{"id":"571bfff0-b3ac-486b-b968-9af77b07fe66","name":"깃허브 전체 사용언어 통계 연동","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/users/:user_id/dashboard/repositories/languages","host":["http://localhost:3001"],"path":["v1","users",":user_id","dashboard","repositories","languages"],"variable":[{"key":"user_id","value":"6195daa5856537d371ba17f7"}]}},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\r\n    \"code\": \"Success\",\r\n    \"data\": {\r\n        \"_id\": \"6195daa5856537d371ba17f7\",\r\n        \"name\": \"유정한\",\r\n        \"username\": \"codingegg\",\r\n        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\",\r\n        \"authProvider\": \"google\",\r\n        \"authProviderID\": \"115035354209923827666\",\r\n        \"isRegistered\": true,\r\n        \"techStacks\": [],\r\n        \"lastVisitedAt\": \"2021-11-18T04:46:29.609Z\",\r\n        \"bio\": \"나는 유정란입니다.\",\r\n        \"githubUsername\": \"youjeonghan\",\r\n        \"birthday\": \"2020-10-10T00:00:00.000Z\",\r\n        \"company\": \"\",\r\n        \"region\": \"\",\r\n        \"school\": \"\",\r\n        \"sex\": \"male\",\r\n        \"dashboard\": {\r\n            \"name\": \"유정한\",\r\n            \"phoneNumber\": \"010-9691-0180\",\r\n            \"school\": \"세종대학교\",\r\n            \"region\": \"경기도 성남시 분당구\",\r\n            \"birthday\": \"1996-07-11T00:00:00.000Z\",\r\n            \"jobObjectives\": [],\r\n            \"techStacks\": {\r\n                \"프론트엔드\": [\r\n                    {\r\n                        \"_id\": \"619b9bb834b70122c105f359\",\r\n                        \"techStack\": \"Flutter\",\r\n                        \"color\": \"#50BFF1\"\r\n                    }\r\n                ]\r\n            },\r\n            \"statistics\": {\r\n                \"reposLanguage\": {\r\n                    \"TypeScript\": 29.68,\r\n                    \"CSS\": 2.77,\r\n                    \"JavaScript\": 0.89,\r\n                    \"Python\": 33.33,\r\n                    \"Dart\": 21,\r\n                    \"HTML\": 10.68,\r\n                    \"Swift\": 1.16,\r\n                    \"Kotlin\": 0.38,\r\n                    \"Objective-C\": 0.11\r\n                }\r\n            }\r\n        }\r\n    }\r\n}"}],"_postman_id":"05ca71b4-036e-46e0-a2a4-0cb9391fc729"},{"name":"대쉬보드 기본정보 가져오기","id":"f062a077-e9ff-4a3f-b6ea-3bd5cbaf5a5e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[],"url":"http://localhost:3001/v1/users/dashboard?username=codingegg","urlObject":{"path":["v1","users","dashboard"],"host":["http://localhost:3001"],"query":[{"key":"username","value":"codingegg"}],"variable":[]}},"response":[{"id":"af6499c8-d508-47fb-9260-45dfd27107f9","name":"대쉬보드 기본정보 가져오기","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/users/dashboard?username=username","host":["http://localhost:3001"],"path":["v1","users","dashboard"],"query":[{"key":"username","value":"username"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": {\n        \"_id\": \"6194d078928b431f065e0997\",\n        \"name\": \"김동민\",\n        \"phoneNumber\": \"010-3400-1897\",\n        \"school\": \"건국대학교\",\n        \"region\": \"경기도 성남시 분당구\",\n        \"birthday\": \"1999-02-11T00:00:00.000Z\",\n        \"github\": \"https://github.com/dmin0211\",\n        \"blog\": \"https://bllog.dongmin.dev\",\n        \"email\": \"kdmin0211@gmail.com\",\n        \"jobObjectives\": [],\n        \"techStacks\": {\n            \"프론트엔드\": [\n                {\n                    \"_id\": \"619b9bb834b70122c105f350\",\n                    \"techStack\": \"JavaScript\",\n                    \"color\": \"#EFD81E\"\n                },\n                {\n                    \"_id\": \"619b9bb834b70122c105f351\",\n                    \"techStack\": \"Python\",\n                    \"color\": \"#254F73\"\n                }\n            ],\n            \"백엔드\": [\n                {\n                    \"_id\": \"619b9bb834b70122c105f352\",\n                    \"techStack\": \"HTML\",\n                    \"color\": \"#D23B13\"\n                },\n                {\n                    \"_id\": \"619b9bb834b70122c105f353\",\n                    \"techStack\": \"React\",\n                    \"color\": \"#5ED3F3\"\n                }\n            ]\n        },\n        \"dashboardHistories\": [\n            {\n                \"_id\": \"61990ee1670983b0251d4d34\",\n                \"userID\": \"6194d078928b431f065e0997\",\n                \"content\": \"졸업\",\n                \"date\": \"2017-01-01T00:00:00.000Z\"\n            },\n            {\n                \"_id\": \"61990ece670983b0251d4d2e\",\n                \"userID\": \"6194d078928b431f065e0997\",\n                \"content\": \"입학\",\n                \"date\": \"2017-03-01T00:00:00.000Z\"\n            }\n        ]\n    }\n}"}],"_postman_id":"f062a077-e9ff-4a3f-b6ea-3bd5cbaf5a5e"},{"name":"대쉬보드 기본정보 업데이트","id":"c27d8182-85d0-4496-b951-cdeaf6721c29","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"김동민\",\n    \"phoneNumber\": \"010-3400-1897\",\n    \"school\": \"건국대학교\",\n    \"region\": \"경기도 성남시 분당구\",\n    \"birthday\": \"1999-02-11\",\n    \"email\": \"kdmin0211@gmail.com\",\n    \"github\": \"https://github.com/dmin0211\",\n    \"blog\": \"https://bllog.dongmin.dev\",\n    \"jobObjectives\": [\n        \"백엔드\",\n        \"프론트엔드\"\n    ],\n    \"techStacks\": {\n        \"프론트엔드\": [\n            {\n                \"_id\": \"619b9bb834b70122c105f350\",\n                \"techStack\": \"JavaScript\",\n                \"color\": \"#EFD81E\"\n            },\n            {\n                \"_id\": \"619b9bb834b70122c105f351\",\n                \"techStack\": \"Python\",\n                \"color\": \"#254F73\"\n            }\n        ],\n        \"백엔드\": [\n            {\n                \"_id\": \"619b9bb834b70122c105f352\",\n                \"techStack\": \"HTML\",\n                \"color\": \"#D23B13\"\n            },\n            {\n                \"_id\": \"619b9bb834b70122c105f353\",\n                \"techStack\": \"React\",\n                \"color\": \"#5ED3F3\"\n            }\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/users/:user_id/dashboard","urlObject":{"path":["v1","users",":user_id","dashboard"],"host":["http://localhost:3001"],"query":[],"variable":[{"type":"any","value":"6195daa5856537d371ba17f7","key":"user_id"}]}},"response":[{"id":"df6e3a97-327e-45f0-a1ab-509bcbcaa400","name":"대쉬보드 기본정보 업데이트","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"김동민\",\n    \"phoneNumber\": \"010-3400-1897\",\n    \"school\": \"건국대학교\",\n    \"region\": \"경기도 성남시 분당구\",\n    \"birthday\": \"1999-02-11\",\n    \"email\": \"kdmin0211@gmail.com\",\n    \"github\": \"https://github.com/dmin0211\",\n    \"blog\": \"https://bllog.dongmin.dev\",\n    \"jobObjects\": [\n        \"백엔드\",\n        \"프론트엔드\"\n    ],\n    \"techStacks\": {\n        \"프론트엔드\": [\n            {\n                \"_id\": \"619b9bb834b70122c105f350\",\n                \"techStack\": \"JavaScript\",\n                \"color\": \"#EFD81E\"\n            },\n            {\n                \"_id\": \"619b9bb834b70122c105f351\",\n                \"techStack\": \"Python\",\n                \"color\": \"#254F73\"\n            }\n        ],\n        \"백엔드\": [\n            {\n                \"_id\": \"619b9bb834b70122c105f352\",\n                \"techStack\": \"HTML\",\n                \"color\": \"#D23B13\"\n            },\n            {\n                \"_id\": \"619b9bb834b70122c105f353\",\n                \"techStack\": \"React\",\n                \"color\": \"#5ED3F3\"\n            }\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:3001/v1/users/:user_id/dashboard","host":["http://localhost:3001"],"path":["v1","users",":user_id","dashboard"],"variable":[{"key":"user_id","value":"6194d078928b431f065e0997"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": {\n        \"_id\": \"6194d078928b431f065e0997\",\n        \"name\": \"김동민\",\n        \"phoneNumber\": \"010-3400-1897\",\n        \"school\": \"건국대학교\",\n        \"region\": \"경기도 성남시 분당구\",\n        \"birthday\": \"1999-02-11T00:00:00.000Z\",\n        \"github\": \"https://github.com/dmin0211\",\n        \"blog\": \"https://bllog.dongmin.dev\",\n        \"email\": \"kdmin0211@gmail.com\",\n        \"jobObjectives\": [\n            \"백엔드\",\n            \"프론트엔드\"\n        ],\n        \"techStacks\": {\n            \"프론트엔드\": [\n                {\n                    \"_id\": \"619b9bb834b70122c105f350\",\n                    \"techStack\": \"JavaScript\",\n                    \"color\": \"#EFD81E\"\n                },\n                {\n                    \"_id\": \"619b9bb834b70122c105f351\",\n                    \"techStack\": \"Python\",\n                    \"color\": \"#254F73\"\n                }\n            ],\n            \"백엔드\": [\n                {\n                    \"_id\": \"619b9bb834b70122c105f352\",\n                    \"techStack\": \"HTML\",\n                    \"color\": \"#D23B13\"\n                },\n                {\n                    \"_id\": \"619b9bb834b70122c105f353\",\n                    \"techStack\": \"React\",\n                    \"color\": \"#5ED3F3\"\n                }\n            ]\n        }\n    }\n}"}],"_postman_id":"c27d8182-85d0-4496-b951-cdeaf6721c29"},{"name":"대시보드 히스토리 삭제","id":"f6f888c4-5c63-487c-aed3-571fa31719d7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n    \"historyID\": \"61990a80890494def1e2cf0c\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/users/:user_id/dashboard/histories","urlObject":{"path":["v1","users",":user_id","dashboard","histories"],"host":["http://localhost:3001"],"query":[],"variable":[{"type":"any","value":"6194d078928b431f065e0997","key":"user_id"}]}},"response":[{"id":"f4682d84-7979-4ca2-bfd1-4fdad87a79fb","name":"대시보드 히스토리 삭제","originalRequest":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n    \"historyID\": \"61990a80890494def1e2cf0c\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:3001/v1/users/:user_id/dashboard/histories","host":["http://localhost:3001"],"path":["v1","users",":user_id","dashboard","histories"],"variable":[{"key":"user_id","value":"6194d078928b431f065e0997"}]}},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\"\n}"}],"_postman_id":"f6f888c4-5c63-487c-aed3-571fa31719d7"},{"name":"GitHub Repository 리스트","id":"e1288323-c198-405a-99fd-77892c125843","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[],"url":"http://localhost:3001/v1/users/:user_id/repositories","urlObject":{"path":["v1","users",":user_id","repositories"],"host":["http://localhost:3001"],"query":[],"variable":[{"id":"b67ccb40-48b1-4f45-b6b8-78bfe62d7d1c","description":{"content":"<p>유저 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"6195daa5856537d371ba17f7","key":"user_id"}]}},"response":[{"id":"d3f3ce06-24a5-45ab-951a-9f6a478fe44e","name":"GitHub Repository 리스트","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/users/:user_id/repositories","host":["http://localhost:3001"],"path":["v1","users",":user_id","repositories"],"variable":[{"key":"user_id","value":"6195daa5856537d371ba17f7","description":"유저 고유 식별자"}]}},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\r\n    \"code\": \"Success\",\r\n    \"data\": [\r\n        {\r\n            \"name\": \"Android_Study\",\r\n            \"url\": \"https://github.com/youjeonghan/Android_Study\"\r\n        },\r\n        {\r\n            \"name\": \"Android_TodoList\",\r\n            \"url\": \"https://github.com/youjeonghan/Android_TodoList\"\r\n        },\r\n        {\r\n            \"name\": \"ATM_Controller\",\r\n            \"url\": \"https://github.com/youjeonghan/ATM_Controller\"\r\n        },\r\n        {\r\n            \"name\": \"BackJoon_Algorithm\",\r\n            \"url\": \"https://github.com/youjeonghan/BackJoon_Algorithm\"\r\n        },\r\n        {\r\n            \"name\": \"CodeUp_Basic100\",\r\n            \"url\": \"https://github.com/youjeonghan/CodeUp_Basic100\"\r\n        },\r\n        {\r\n            \"name\": \"Crawling_Study\",\r\n            \"url\": \"https://github.com/youjeonghan/Crawling_Study\"\r\n        },\r\n        {\r\n            \"name\": \"C_sharp_progaming\",\r\n            \"url\": \"https://github.com/youjeonghan/C_sharp_progaming\"\r\n        },\r\n        {\r\n            \"name\": \"Data_Analysis\",\r\n            \"url\": \"https://github.com/youjeonghan/Data_Analysis\"\r\n        },\r\n        {\r\n            \"name\": \"Django_Study\",\r\n            \"url\": \"https://github.com/youjeonghan/Django_Study\"\r\n        },\r\n        {\r\n            \"name\": \"Flask_Study\",\r\n            \"url\": \"https://github.com/youjeonghan/Flask_Study\"\r\n        },\r\n        {\r\n            \"name\": \"Flutter_GetX_Study\",\r\n            \"url\": \"https://github.com/youjeonghan/Flutter_GetX_Study\"\r\n        },\r\n        {\r\n            \"name\": \"Flutter_Study\",\r\n            \"url\": \"https://github.com/youjeonghan/Flutter_Study\"\r\n        },\r\n        {\r\n            \"name\": \"FlyingPenguin\",\r\n            \"url\": \"https://github.com/youjeonghan/FlyingPenguin\"\r\n        },\r\n        {\r\n            \"name\": \"Front_End_Study\",\r\n            \"url\": \"https://github.com/youjeonghan/Front_End_Study\"\r\n        },\r\n        {\r\n            \"name\": \"Full_Stack_Project\",\r\n            \"url\": \"https://github.com/youjeonghan/Full_Stack_Project\"\r\n        },\r\n        {\r\n            \"name\": \"GazeTracking\",\r\n            \"url\": \"https://github.com/youjeonghan/GazeTracking\"\r\n        },\r\n        {\r\n            \"name\": \"getx_pattern\",\r\n            \"url\": \"https://github.com/youjeonghan/getx_pattern\"\r\n        },\r\n        {\r\n            \"name\": \"IMFlask\",\r\n            \"url\": \"https://github.com/youjeonghan/IMFlask\"\r\n        },\r\n        {\r\n            \"name\": \"LTV_Prediction_Service\",\r\n            \"url\": \"https://github.com/youjeonghan/LTV_Prediction_Service\"\r\n        },\r\n        {\r\n            \"name\": \"Node.js_Study\",\r\n            \"url\": \"https://github.com/youjeonghan/Node.js_Study\"\r\n        },\r\n        {\r\n            \"name\": \"nodebestpractices\",\r\n            \"url\": \"https://github.com/youjeonghan/nodebestpractices\"\r\n        },\r\n        {\r\n            \"name\": \"Programmers_Algorithm\",\r\n            \"url\": \"https://github.com/youjeonghan/Programmers_Algorithm\"\r\n        },\r\n        {\r\n            \"name\": \"pytorch_study_iml\",\r\n            \"url\": \"https://github.com/youjeonghan/pytorch_study_iml\"\r\n        },\r\n        {\r\n            \"name\": \"React_Study\",\r\n            \"url\": \"https://github.com/youjeonghan/React_Study\"\r\n        },\r\n        {\r\n            \"name\": \"Smart_Bell\",\r\n            \"url\": \"https://github.com/youjeonghan/Smart_Bell\"\r\n        },\r\n        {\r\n            \"name\": \"Stop_Egg\",\r\n            \"url\": \"https://github.com/youjeonghan/Stop_Egg\"\r\n        },\r\n        {\r\n            \"name\": \"Test_Supervisor_AI\",\r\n            \"url\": \"https://github.com/youjeonghan/Test_Supervisor_AI\"\r\n        },\r\n        {\r\n            \"name\": \"Tetris\",\r\n            \"url\": \"https://github.com/youjeonghan/Tetris\"\r\n        },\r\n        {\r\n            \"name\": \"toss_clone\",\r\n            \"url\": \"https://github.com/youjeonghan/toss_clone\"\r\n        },\r\n        {\r\n            \"name\": \"Vanilla_Javascript_Web_Component\",\r\n            \"url\": \"https://github.com/youjeonghan/Vanilla_Javascript_Web_Component\"\r\n        }\r\n    ]\r\n}"}],"_postman_id":"e1288323-c198-405a-99fd-77892c125843"},{"name":"기술 스택 검색","id":"e44a80c5-497e-4852-881c-f3008f8daa25","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/techstacks/search?query=JA","urlObject":{"path":["v1","techstacks","search"],"host":["http://localhost:3001"],"query":[{"key":"query","value":"JA"}],"variable":[]}},"response":[{"id":"b75861c1-114c-4413-83b2-89e3a01c3295","name":"기술 스택 검색","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/techstacks/search?query=ja","host":["http://localhost:3001"],"path":["v1","techstacks","search"],"query":[{"key":"query","value":"ja"}]}},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\r\n    \"code\": \"Success\",\r\n    \"data\": [\r\n        {\r\n            \"_id\": \"619b6a3934b70122c105f345\",\r\n            \"techStack\": \"JavaScript\",\r\n            \"searchString\": \"javascript\",\r\n            \"searchCon\": \"js\",\r\n            \"color\": \"#EFD81E\"\r\n        },\r\n        {\r\n            \"_id\": \"619b6a3934b70122c105f34d\",\r\n            \"techStack\": \"Java\",\r\n            \"searchString\": \"java\",\r\n            \"searchCon\": \"\",\r\n            \"color\": \"#5382A1\"\r\n        }\r\n    ]\r\n}"}],"_postman_id":"e44a80c5-497e-4852-881c-f3008f8daa25"},{"name":"Solved.ac 통계정보 갱신","id":"afe11cf4-7b34-4132-b026-c627b4b826c8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"PUT","header":[],"url":"http://localhost:3001/v1/users/:user_id/dashboard/problems/:solved_username/statistics","urlObject":{"path":["v1","users",":user_id","dashboard","problems",":solved_username","statistics"],"host":["http://localhost:3001"],"query":[],"variable":[{"type":"any","value":"6194d078928b431f065e0997","key":"user_id"},{"type":"any","value":"pig1897","key":"solved_username"}]}},"response":[{"id":"1e62a77a-4172-414b-9ed0-632610319124","name":"Solved.ac 통계정보 갱신","originalRequest":{"method":"PUT","header":[],"url":{"raw":"http://localhost:3001/v1/problems/statistics?solved_username=pig1897&user_id=6194d078928b431f065e0997","host":["http://localhost:3001"],"path":["v1","problems","statistics"],"query":[{"key":"solved_username","value":"pig1897"},{"key":"user_id","value":"6194d078928b431f065e0997"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": {\n        \"자료 구조\": 661346,\n        \"분리 집합\": 408280,\n        \"오프라인 쿼리\": 408280,\n        \"분할 정복\": 204859,\n        \"세그먼트 트리\": 172714,\n        \"스택\": 172714,\n        \"그리디 알고리즘\": 138068,\n        \"구현\": 132477,\n        \"정렬\": 129051\n    }\n}"}],"_postman_id":"afe11cf4-7b34-4132-b026-c627b4b826c8"},{"name":"Solved.ac 통계정보 가져오기","id":"bed24050-42fc-4c8e-8d36-8bc0055ae262","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/users/:user_id/dashboard/problems/statistics","urlObject":{"path":["v1","users",":user_id","dashboard","problems","statistics"],"host":["http://localhost:3001"],"query":[],"variable":[{"type":"any","value":"6194d078928b431f065e0997","key":"user_id"}]}},"response":[{"id":"8b5ffd18-8d5e-45f6-8723-c8f929a69709","name":"Solved.ac 통계정보 가져오기","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/users/:user_id/dashboard/problems/statistics","host":["http://localhost:3001"],"path":["v1","users",":user_id","dashboard","problems","statistics"],"variable":[{"key":"user_id","value":"6194d078928b431f065e0997"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": {\n        \"자료 구조\": 661346,\n        \"분리 집합\": 408280,\n        \"오프라인 쿼리\": 408280,\n        \"분할 정복\": 204859,\n        \"세그먼트 트리\": 172714,\n        \"스택\": 172714,\n        \"그리디 알고리즘\": 138068,\n        \"구현\": 132477,\n        \"정렬\": 129051\n    }\n}"}],"_postman_id":"bed24050-42fc-4c8e-8d36-8bc0055ae262"},{"name":"대시보드 깃허브 레파지토리 추가 Copy","id":"b3d21b5b-0306-44f4-af62-c0f081f1368a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"userID\": \"6195daa5856537d371ba17f7\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/users/:user_id/dashboard/repositories/:repo_name","urlObject":{"path":["v1","users",":user_id","dashboard","repositories",":repo_name"],"host":["http://localhost:3001"],"query":[],"variable":[{"id":"17953139-8efb-4ddd-988b-f06377dd3b1d","description":{"content":"<p>유저 _id</p>\n","type":"text/plain"},"type":"any","value":"6195daa5856537d371ba17f7","key":"user_id"},{"id":"12dd5568-4dd4-4440-a683-837e7e3ae912","description":{"content":"<p>레포 이</p>\n","type":"text/plain"},"type":"any","value":"Flutter_Study","key":"repo_name"}]}},"response":[{"id":"9d253b2a-5dd7-420b-91c5-562afe112274","name":"대시보드 깃허브 레파지토리 추가","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"userID\": \"6195daa5856537d371ba17f7\"\r\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:3001/v1/users/:user_id/dashboard/repositories/:repo_name","host":["http://localhost:3001"],"path":["v1","users",":user_id","dashboard","repositories",":repo_name"],"variable":[{"key":"user_id","value":"6195daa5856537d371ba17f7","description":"유저 _id"},{"key":"repo_name","value":"WEB26-COKIRI","description":"레포 이"}]}},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\r\n    \"code\": \"Success\",\r\n    \"data\": {\r\n        \"userID\": \"6195daa5856537d371ba17f7\",\r\n        \"repoName\": \"Flutter_Study\",\r\n        \"repoUrl\": \"https://github.com/youjeonghan/Flutter_Study\",\r\n        \"startCount\": 1,\r\n        \"content\": \"# Flutter_Study\\n\\n117. What does \\\"Responsive\\\" and \\\"Adaptive\\\" Mean?\\n137. Module Introduction\\n138. The Problem At Hand\\n139. Widget Tree & Element Tree - What, Why and How?\\n140. How Flutter Rebuilds & Repaints the Screen\\n\",\r\n        \"languageInfo\": {\r\n            \"Dart\": 62.99,\r\n            \"HTML\": 32.05,\r\n            \"Swift\": 3.49,\r\n            \"Kotlin\": 1.13,\r\n            \"Objective-C\": 0.33\r\n        },\r\n        \"_id\": \"6198ac7677c58f811ebc3bc8\",\r\n        \"createdAt\": \"2021-11-20T08:06:14.087Z\",\r\n        \"updatedAt\": \"2021-11-20T08:06:14.087Z\"\r\n    }\r\n}"}],"_postman_id":"b3d21b5b-0306-44f4-af62-c0f081f1368a"}],"id":"8e23db54-a52b-45b6-b4aa-86aac09bbcf4","_postman_id":"8e23db54-a52b-45b6-b4aa-86aac09bbcf4","description":""},{"name":"설정 페이지","item":[{"name":"설정 페이지 보기","id":"55a6d186-48af-4555-a7c1-4762c97985e6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[],"url":"http://localhost:3001/v1/users/:user_id/settings","urlObject":{"path":["v1","users",":user_id","settings"],"host":["http://localhost:3001"],"query":[],"variable":[{"description":{"content":"<p>유저 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"6189fe77e0b6fb7c282d505f","key":"user_id"}]}},"response":[{"id":"3d7c0741-45bd-4309-9c77-22f091653e75","name":"설정 페이지 보기","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/users/:user_id/settings","host":["http://localhost:3001"],"path":["v1","users",":user_id","settings"],"variable":[{"key":"user_id","value":"6189fe77e0b6fb7c282d505f","description":"유저 고유 식별자"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"profileImage\": \"/images/default_profile_image.jpg\",\n    \"_id\": \"6189fe77e0b6fb7c282d505f\",\n    \"username\": \"TESTUSERNAME\",\n    \"authProvider\": \"google\",\n    \"languages\": [\n        \"6189329e409d8a9e2a3723f0\"\n    ],\n    \"createdAt\": \"2021-11-09T04:52:07.771Z\",\n    \"updatedAt\": \"2021-11-11T10:26:52.676Z\",\n    \"birthday\": \"2020-10-10T00:00:00.000Z\",\n    \"name\": \"\",\n    \"company\": \"\",\n    \"region\": \"\",\n    \"school\": \"\",\n    \"sex\": \"male\",\n    \"tistoryURL\": \"https://dongmin-tech.tistory.com\",\n    \"bio\": \"나는 김동민입니다.\",\n    \"lastVisitedAt\": \"2021-11-14T15:14:13.768Z\"\n}"}],"_postman_id":"55a6d186-48af-4555-a7c1-4762c97985e6"},{"name":"설정 페이지 수정","id":"4a7c749c-4937-48d8-bc22-1f30fc6b9e29","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"\",\n    \"username\": \"COCOO\",\n    \"school\": \"\",\n    \"company\": \"\",\n    \"sex\": \"male\",\n    \"birthday\": \"2020-10-10\",\n    \"region\": \"\",\n    \"languages\": [\"6189329e409d8a9e2a3723f0\"]\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/users/:user_id/settings","urlObject":{"path":["v1","users",":user_id","settings"],"host":["http://localhost:3001"],"query":[],"variable":[{"description":{"content":"<p>유저 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"6189fe77e0b6fb7c282d505f","key":"user_id"}]}},"response":[{"id":"d4874c0d-10c7-4fc4-bbf6-6686e798fdce","name":"설정 페이지 수정","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"\",\n    \"username\": \"urlSafeUsername\",\n    \"school\": \"\",\n    \"company\": \"\",\n    \"sex\": \"male\",\n    \"birthday\": \"2020-10-10\",\n    \"region\": \"\",\n    \"languages\": [\"6189329e409d8a9e2a3723f0\"]\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:3001/v1/users/:user_id/settings","host":["http://localhost:3001"],"path":["v1","users",":user_id","settings"],"variable":[{"key":"user_id","value":"6189fe77e0b6fb7c282d505f","description":"유저 고유 식별자"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\"\n}"}],"_postman_id":"4a7c749c-4937-48d8-bc22-1f30fc6b9e29"}],"id":"91a0ea18-5881-4eae-9803-d0f12f4fa9d7","_postman_id":"91a0ea18-5881-4eae-9803-d0f12f4fa9d7","description":""},{"name":"랜덤 페이지","item":[{"name":"랜덤 페이지","id":"64a35aec-7868-44a1-b526-531694331d6f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/posts/random?cursor=0","description":"<p>user_id에 user _id 입력시 해당 유저글 제외 랜덤</p>\n","urlObject":{"path":["v1","posts","random"],"host":["http://localhost:3001"],"query":[{"disabled":true,"key":"user_id","value":"6195daa5856537d371ba17f7"},{"key":"cursor","value":"0"}],"variable":[]}},"response":[{"id":"bdb5abc5-7ccb-482a-9b68-aea47b7f7a1c","name":"랜덤 페이지","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/posts/random?cursor=0","host":["http://localhost:3001"],"path":["v1","posts","random"],"query":[{"key":"user_id","value":"6195daa5856537d371ba17f7","disabled":true},{"key":"cursor","value":"0"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"nextCursor\": 3,\n    \"data\": [\n        {\n            \"_id\": \"619647ad85cd9fec558b8273\",\n            \"content\": \"저의 이번주 활동 시간입니다~~~ 어떤가요?? 다들 공유해주세요!!\",\n            \"tags\": [],\n            \"type\": \"normal\",\n            \"createdAt\": \"2021-11-18T12:31:41.544Z\",\n            \"updatedAt\": \"2021-11-18T12:31:41.544Z\",\n            \"user\": {\n                \"_id\": \"6194d078928b431f065e0997\",\n                \"username\": \"dmin02111\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/IMNhw6aSsPZW9V8cIw93A.png\"\n            },\n            \"comments\": [\n                {\n                    \"_id\": \"619f18dcb5d2552c7bf43ead\",\n                    \"content\": \"1\",\n                    \"createdAt\": \"2021-11-25T05:02:20.429Z\",\n                    \"updatedAt\": \"2021-11-25T05:02:20.429Z\",\n                    \"user\": {\n                        \"_id\": \"6194d21006d472d1f4839373\",\n                        \"username\": \"hyunmindev\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"619f18ddb5d2552c7bf43eba\",\n                    \"content\": \"2\",\n                    \"createdAt\": \"2021-11-25T05:02:21.511Z\",\n                    \"updatedAt\": \"2021-11-25T05:02:21.511Z\",\n                    \"user\": {\n                        \"_id\": \"6194d21006d472d1f4839373\",\n                        \"username\": \"hyunmindev\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"619f18deb5d2552c7bf43ec7\",\n                    \"content\": \"3\",\n                    \"createdAt\": \"2021-11-25T05:02:22.537Z\",\n                    \"updatedAt\": \"2021-11-25T05:02:22.537Z\",\n                    \"user\": {\n                        \"_id\": \"6194d21006d472d1f4839373\",\n                        \"username\": \"hyunmindev\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"619f18dfb5d2552c7bf43ed4\",\n                    \"content\": \"4\",\n                    \"createdAt\": \"2021-11-25T05:02:23.470Z\",\n                    \"updatedAt\": \"2021-11-25T05:02:23.470Z\",\n                    \"user\": {\n                        \"_id\": \"6194d21006d472d1f4839373\",\n                        \"username\": \"hyunmindev\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"619f18e0b5d2552c7bf43ee1\",\n                    \"content\": \"5\",\n                    \"createdAt\": \"2021-11-25T05:02:24.835Z\",\n                    \"updatedAt\": \"2021-11-25T05:02:24.835Z\",\n                    \"user\": {\n                        \"_id\": \"6194d21006d472d1f4839373\",\n                        \"username\": \"hyunmindev\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"619f18e3b5d2552c7bf43eee\",\n                    \"content\": \"6\",\n                    \"createdAt\": \"2021-11-25T05:02:27.982Z\",\n                    \"updatedAt\": \"2021-11-25T05:02:27.982Z\",\n                    \"user\": {\n                        \"_id\": \"6194d21006d472d1f4839373\",\n                        \"username\": \"hyunmindev\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"619f18e5b5d2552c7bf43efb\",\n                    \"content\": \"7\",\n                    \"createdAt\": \"2021-11-25T05:02:29.736Z\",\n                    \"updatedAt\": \"2021-11-25T05:02:29.736Z\",\n                    \"user\": {\n                        \"_id\": \"6194d21006d472d1f4839373\",\n                        \"username\": \"hyunmindev\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"619f18e7b5d2552c7bf43f08\",\n                    \"content\": \"8\",\n                    \"createdAt\": \"2021-11-25T05:02:31.712Z\",\n                    \"updatedAt\": \"2021-11-25T05:02:31.712Z\",\n                    \"user\": {\n                        \"_id\": \"6194d21006d472d1f4839373\",\n                        \"username\": \"hyunmindev\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"619f18e8b5d2552c7bf43f15\",\n                    \"content\": \"9\",\n                    \"createdAt\": \"2021-11-25T05:02:32.460Z\",\n                    \"updatedAt\": \"2021-11-25T05:02:32.460Z\",\n                    \"user\": {\n                        \"_id\": \"6194d21006d472d1f4839373\",\n                        \"username\": \"hyunmindev\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"619f18ecb5d2552c7bf43f22\",\n                    \"content\": \"10\",\n                    \"createdAt\": \"2021-11-25T05:02:36.187Z\",\n                    \"updatedAt\": \"2021-11-25T05:02:36.187Z\",\n                    \"user\": {\n                        \"_id\": \"6194d21006d472d1f4839373\",\n                        \"username\": \"hyunmindev\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"619f18efb5d2552c7bf43f30\",\n                    \"content\": \"11\",\n                    \"createdAt\": \"2021-11-25T05:02:39.317Z\",\n                    \"updatedAt\": \"2021-11-25T05:02:39.317Z\",\n                    \"user\": {\n                        \"_id\": \"6194d21006d472d1f4839373\",\n                        \"username\": \"hyunmindev\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"619f18f0b5d2552c7bf43f3d\",\n                    \"content\": \"12\",\n                    \"createdAt\": \"2021-11-25T05:02:40.691Z\",\n                    \"updatedAt\": \"2021-11-25T05:02:40.691Z\",\n                    \"user\": {\n                        \"_id\": \"6194d21006d472d1f4839373\",\n                        \"username\": \"hyunmindev\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"619f18f2b5d2552c7bf43f4a\",\n                    \"content\": \"13\",\n                    \"createdAt\": \"2021-11-25T05:02:42.965Z\",\n                    \"updatedAt\": \"2021-11-25T05:02:42.965Z\",\n                    \"user\": {\n                        \"_id\": \"6194d21006d472d1f4839373\",\n                        \"username\": \"hyunmindev\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"619f18f4b5d2552c7bf43f57\",\n                    \"content\": \"14\",\n                    \"createdAt\": \"2021-11-25T05:02:44.763Z\",\n                    \"updatedAt\": \"2021-11-25T05:02:44.763Z\",\n                    \"user\": {\n                        \"_id\": \"6194d21006d472d1f4839373\",\n                        \"username\": \"hyunmindev\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"61a060fa5464777d0bad49d9\",\n                    \"content\": \"좋네요!\",\n                    \"createdAt\": \"2021-11-26T04:22:18.199Z\",\n                    \"updatedAt\": \"2021-11-26T04:22:18.199Z\",\n                    \"user\": {\n                        \"_id\": \"61a060615464777d0bad4794\",\n                        \"username\": \"amor\",\n                        \"profileImage\": \"/images/default_profile_image.jpg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"61a061955464777d0bad50c3\",\n                    \"content\": \"댓글\",\n                    \"createdAt\": \"2021-11-26T04:24:53.342Z\",\n                    \"updatedAt\": \"2021-11-26T04:24:53.342Z\",\n                    \"user\": {\n                        \"_id\": \"61a060615464777d0bad4794\",\n                        \"username\": \"amor\",\n                        \"profileImage\": \"/images/default_profile_image.jpg\"\n                    },\n                    \"likes\": []\n                }\n            ],\n            \"likes\": [],\n            \"images\": [\n                {\n                    \"_id\": \"619647ad85cd9fec558b8276\",\n                    \"url\": \"https://kr.object.ncloudstorage.com/cocoo/posts/_A4mwNfNzLvX5jntnSP77.png\"\n                }\n            ]\n        },\n        {\n            \"_id\": \"6196427185cd9fec558b6563\",\n            \"content\": \"테스트 합니다\",\n            \"tags\": [],\n            \"type\": \"normal\",\n            \"createdAt\": \"2021-11-18T12:09:21.255Z\",\n            \"updatedAt\": \"2021-11-18T12:09:21.255Z\",\n            \"user\": {\n                \"_id\": \"6194d078928b431f065e0997\",\n                \"username\": \"dmin02111\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/IMNhw6aSsPZW9V8cIw93A.png\"\n            },\n            \"comments\": [\n                {\n                    \"_id\": \"6196448785cd9fec558b6eff\",\n                    \"content\": \"앙 부캠띠~\",\n                    \"createdAt\": \"2021-11-18T12:18:15.977Z\",\n                    \"updatedAt\": \"2021-11-18T12:18:15.977Z\",\n                    \"user\": {\n                        \"_id\": \"6195daa5856537d371ba17f7\",\n                        \"username\": \"codingegg\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                    },\n                    \"likes\": [\n                        {\n                            \"_id\": \"619665eb252efc2605054413\",\n                            \"createdAt\": \"2021-11-18T14:40:43.011Z\",\n                            \"user\": {\n                                \"_id\": \"6194d078928b431f065e0997\",\n                                \"username\": \"dmin02111\",\n                                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/IMNhw6aSsPZW9V8cIw93A.png\"\n                            }\n                        },\n                        {\n                            \"_id\": \"61a03dac252efc26053c6053\",\n                            \"createdAt\": \"2021-11-26T01:51:40.880Z\",\n                            \"user\": {\n                                \"_id\": \"6194d21006d472d1f4839373\",\n                                \"username\": \"hyunmindev\",\n                                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                            }\n                        }\n                    ]\n                },\n                {\n                    \"_id\": \"6196448e85cd9fec558b6f7a\",\n                    \"content\": \"헤헤 재밌당\",\n                    \"createdAt\": \"2021-11-18T12:18:22.751Z\",\n                    \"updatedAt\": \"2021-11-18T12:18:22.751Z\",\n                    \"user\": {\n                        \"_id\": \"6195daa5856537d371ba17f7\",\n                        \"username\": \"codingegg\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                    },\n                    \"likes\": [\n                        {\n                            \"_id\": \"6196448f252efc260504d202\",\n                            \"createdAt\": \"2021-11-18T12:18:23.428Z\",\n                            \"user\": {\n                                \"_id\": \"6195daa5856537d371ba17f7\",\n                                \"username\": \"codingegg\",\n                                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                            }\n                        },\n                        {\n                            \"_id\": \"619665eb252efc260505441e\",\n                            \"createdAt\": \"2021-11-18T14:40:43.709Z\",\n                            \"user\": {\n                                \"_id\": \"6194d078928b431f065e0997\",\n                                \"username\": \"dmin02111\",\n                                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/IMNhw6aSsPZW9V8cIw93A.png\"\n                            }\n                        }\n                    ]\n                }\n            ],\n            \"likes\": [\n                {\n                    \"_id\": \"6196438a252efc260504ccdb\",\n                    \"createdAt\": \"2021-11-18T12:14:02.965Z\",\n                    \"user\": {\n                        \"_id\": \"6195daa5856537d371ba17f7\",\n                        \"username\": \"codingegg\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                    }\n                },\n                {\n                    \"_id\": \"61964488252efc260504d186\",\n                    \"createdAt\": \"2021-11-18T12:18:16.022Z\",\n                    \"user\": {\n                        \"_id\": \"6194d078928b431f065e0997\",\n                        \"username\": \"dmin02111\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/IMNhw6aSsPZW9V8cIw93A.png\"\n                    }\n                },\n                {\n                    \"_id\": \"619f5e26252efc26053afc6e\",\n                    \"createdAt\": \"2021-11-25T09:57:58.476Z\",\n                    \"user\": {\n                        \"_id\": \"6194d21006d472d1f4839373\",\n                        \"username\": \"hyunmindev\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                    }\n                }\n            ],\n            \"images\": [\n                {\n                    \"_id\": \"6196427185cd9fec558b6566\",\n                    \"url\": \"https://kr.object.ncloudstorage.com/cocoo/posts/OFUmeusyPIQuBOF479PmD.png\"\n                }\n            ]\n        },\n        {\n            \"_id\": \"6196425d85cd9fec558b6524\",\n            \"content\": \"배포 된건가요??\",\n            \"tags\": [],\n            \"type\": \"normal\",\n            \"createdAt\": \"2021-11-18T12:09:01.464Z\",\n            \"updatedAt\": \"2021-11-18T12:09:01.464Z\",\n            \"user\": {\n                \"_id\": \"6194d078928b431f065e0997\",\n                \"username\": \"dmin02111\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/IMNhw6aSsPZW9V8cIw93A.png\"\n            },\n            \"comments\": [\n                {\n                    \"_id\": \"6196445f85cd9fec558b6dd1\",\n                    \"content\": \"네 배포 됬습니다~\",\n                    \"createdAt\": \"2021-11-18T12:17:35.802Z\",\n                    \"updatedAt\": \"2021-11-18T12:17:35.802Z\",\n                    \"user\": {\n                        \"_id\": \"6195daa5856537d371ba17f7\",\n                        \"username\": \"codingegg\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                    },\n                    \"likes\": [\n                        {\n                            \"_id\": \"61964476252efc260504d0f6\",\n                            \"createdAt\": \"2021-11-18T12:17:58.569Z\",\n                            \"user\": {\n                                \"_id\": \"6195daa5856537d371ba17f7\",\n                                \"username\": \"codingegg\",\n                                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                            }\n                        },\n                        {\n                            \"_id\": \"61964486252efc260504d16f\",\n                            \"createdAt\": \"2021-11-18T12:18:14.108Z\",\n                            \"user\": {\n                                \"_id\": \"6194d078928b431f065e0997\",\n                                \"username\": \"dmin02111\",\n                                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/IMNhw6aSsPZW9V8cIw93A.png\"\n                            }\n                        }\n                    ]\n                },\n                {\n                    \"_id\": \"619c7888b7446785a033d230\",\n                    \"content\": \"됬이 아니라 됐이에요\",\n                    \"createdAt\": \"2021-11-23T05:13:44.381Z\",\n                    \"updatedAt\": \"2021-11-23T05:13:44.381Z\",\n                    \"user\": {\n                        \"_id\": \"6194d21006d472d1f4839373\",\n                        \"username\": \"hyunmindev\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"619f67bf11a4e935092df469\",\n                    \"content\": \"댓글추가\",\n                    \"createdAt\": \"2021-11-25T10:38:55.790Z\",\n                    \"updatedAt\": \"2021-11-25T10:38:55.790Z\",\n                    \"user\": {\n                        \"_id\": \"6195daa5856537d371ba17f7\",\n                        \"username\": \"codingegg\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"619f6908e51cb9cbaa508577\",\n                    \"content\": \"댓글추가\",\n                    \"createdAt\": \"2021-11-25T10:44:24.275Z\",\n                    \"updatedAt\": \"2021-11-25T10:44:24.275Z\",\n                    \"user\": {\n                        \"_id\": \"6195daa5856537d371ba17f7\",\n                        \"username\": \"codingegg\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                    },\n                    \"likes\": []\n                }\n            ],\n            \"likes\": [\n                {\n                    \"_id\": \"61964310252efc260504c9ce\",\n                    \"createdAt\": \"2021-11-18T12:12:00.542Z\",\n                    \"user\": {\n                        \"_id\": \"6195daa5856537d371ba17f7\",\n                        \"username\": \"codingegg\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                    }\n                },\n                {\n                    \"_id\": \"6196448e252efc260504d1eb\",\n                    \"createdAt\": \"2021-11-18T12:18:22.134Z\",\n                    \"user\": {\n                        \"_id\": \"6194d078928b431f065e0997\",\n                        \"username\": \"dmin02111\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/IMNhw6aSsPZW9V8cIw93A.png\"\n                    }\n                }\n            ],\n            \"images\": [\n                {\n                    \"_id\": \"6196425d85cd9fec558b6527\",\n                    \"url\": \"https://kr.object.ncloudstorage.com/cocoo/posts/KiuVtiguiu_0qELtjgMRK.png\"\n                }\n            ]\n        }\n    ]\n}"}],"_postman_id":"64a35aec-7868-44a1-b526-531694331d6f"}],"id":"f70f5575-379b-423c-9130-90829db31d7b","_postman_id":"f70f5575-379b-423c-9130-90829db31d7b","description":""},{"name":"local","item":[{"name":"글쓰기","item":[{"name":"포스트 작성","id":"ef81aad0-4e1f-4c52-a87d-0415f1d32a82","protocolProfileBehavior":{"disableBodyPruning":true,"disabledSystemHeaders":{}},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"type\": \"external\",\r\n    \"content\": \"공모전 깃허브입니다.\",\r\n    \"userID\": \"6194d078928b431f065e0997\",\r\n    \"title\": \"Web_Buxi\",\r\n    \"external\": {\r\n        \"type\": \"repository\",\r\n        \"content\": \"<div id=\\\"readme\\\" class=\\\"md\\\" data-path=\\\"README.md\\\"><article class=\\\"markdown-body entry-content container-lg\\\" itemprop=\\\"text\\\"><div align=\\\"center\\\" dir=\\\"auto\\\">\\n<a target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\" href=\\\"https://user-images.githubusercontent.com/74395748/139573141-fbfeedbf-a4b8-4b34-ba81-26860d334aeb.png\\\"><img width=\\\"497\\\" alt=\\\"Screen Shot 2021-10-31 at 4 33 04 PM\\\" src=\\\"https://user-images.githubusercontent.com/74395748/139573141-fbfeedbf-a4b8-4b34-ba81-26860d334aeb.png\\\" style=\\\"max-width: 100%;\\\"></a>\\n</div>\\n<div align=\\\"center\\\" dir=\\\"auto\\\">\\n    <p dir=\\\"auto\\\">\\n        Buxi = Bus + Taxi<br>\\n        스마트 하게 호출하는<br>\\n        커뮤니티 모빌리티 서비스\\n    </p>\\n</div>\\n<h2 dir=\\\"auto\\\"><a id=\\\"user-content-개요\\\" class=\\\"anchor\\\" aria-hidden=\\\"true\\\" href=\\\"#개요\\\"><svg class=\\\"octicon octicon-link\\\" viewBox=\\\"0 0 16 16\\\" version=\\\"1.1\\\" width=\\\"16\\\" height=\\\"16\\\" aria-hidden=\\\"true\\\"><path fill-rule=\\\"evenodd\\\" d=\\\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\\\"></path></svg></a>개요</h2>\\n<p dir=\\\"auto\\\">현대인들이 많이 이용하는 대중교통 수단인 버스는 배차간격과 노선이 일정하다 하지만 출퇴근 시간처럼 승객이 많은 시간대가 있고 그렇지 않은 시간대가 있어 불필요한 운행을 하는 버스가 존재한다. 버스의 운행시간과 노선을 경로 최적화를 통해 승객의 수요에 따라 유동적으로 설정함으로써 공(空)버스를 최소화해 탄소 배출량의 감소시키는 것을 목표로 한다.</p>\\n<h2 dir=\\\"auto\\\"><a id=\\\"user-content-공공데이터\\\" class=\\\"anchor\\\" aria-hidden=\\\"true\\\" href=\\\"#공공데이터\\\"><svg class=\\\"octicon octicon-link\\\" viewBox=\\\"0 0 16 16\\\" version=\\\"1.1\\\" width=\\\"16\\\" height=\\\"16\\\" aria-hidden=\\\"true\\\"><path fill-rule=\\\"evenodd\\\" d=\\\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\\\"></path></svg></a>공공데이터</h2>\\n<ul dir=\\\"auto\\\">\\n<li>서울특별시 버스정류장 위치 정보\\n<ul dir=\\\"auto\\\">\\n<li>웹앱 서비스 제공에 사용되는 데이터</li>\\n</ul>\\n</li>\\n<li>서울시 버스노선별 정류장별 시간대별 승하차 인원 정보\\n<ul dir=\\\"auto\\\">\\n<li>기대효과 도출에 사용되는 데이터</li>\\n</ul>\\n</li>\\n</ul>\\n<h2 dir=\\\"auto\\\"><a id=\\\"user-content-buxi-server\\\" class=\\\"anchor\\\" aria-hidden=\\\"true\\\" href=\\\"#buxi-server\\\"><svg class=\\\"octicon octicon-link\\\" viewBox=\\\"0 0 16 16\\\" version=\\\"1.1\\\" width=\\\"16\\\" height=\\\"16\\\" aria-hidden=\\\"true\\\"><path fill-rule=\\\"evenodd\\\" d=\\\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\\\"></path></svg></a>Buxi Server</h2>\\n<p dir=\\\"auto\\\"><a href=\\\"https://github.com/kalgory/Web_Buxi-Server\\\">Github Server Repository</a></p>\\n<h2 dir=\\\"auto\\\"><a id=\\\"user-content-user-flow\\\" class=\\\"anchor\\\" aria-hidden=\\\"true\\\" href=\\\"#user-flow\\\"><svg class=\\\"octicon octicon-link\\\" viewBox=\\\"0 0 16 16\\\" version=\\\"1.1\\\" width=\\\"16\\\" height=\\\"16\\\" aria-hidden=\\\"true\\\"><path fill-rule=\\\"evenodd\\\" d=\\\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\\\"></path></svg></a>User Flow</h2>\\n<div align=\\\"center\\\" dir=\\\"auto\\\">\\n    <a target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\" href=\\\"https://user-images.githubusercontent.com/64261939/119088107-1900f380-ba43-11eb-9227-2127a2985516.png\\\"><img src=\\\"https://user-images.githubusercontent.com/64261939/119088107-1900f380-ba43-11eb-9227-2127a2985516.png\\\" style=\\\"max-width: 100%;\\\"></a>\\n</div>\\n<h2 dir=\\\"auto\\\"><a id=\\\"user-content-시연\\\" class=\\\"anchor\\\" aria-hidden=\\\"true\\\" href=\\\"#시연\\\"><svg class=\\\"octicon octicon-link\\\" viewBox=\\\"0 0 16 16\\\" version=\\\"1.1\\\" width=\\\"16\\\" height=\\\"16\\\" aria-hidden=\\\"true\\\"><path fill-rule=\\\"evenodd\\\" d=\\\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\\\"></path></svg></a>시연</h2>\\n<div align=\\\"center\\\" dir=\\\"auto\\\">\\n    <a target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\" href=\\\"https://user-images.githubusercontent.com/74395748/139580393-b0bfcc0c-20db-41ae-b8fc-9afe91aa9ed7.png\\\"><img src=\\\"https://user-images.githubusercontent.com/74395748/139580393-b0bfcc0c-20db-41ae-b8fc-9afe91aa9ed7.png\\\" style=\\\"max-width: 100%;\\\"></a>\\n</div>\\n<h2 dir=\\\"auto\\\"><a id=\\\"user-content-기대효과\\\" class=\\\"anchor\\\" aria-hidden=\\\"true\\\" href=\\\"#기대효과\\\"><svg class=\\\"octicon octicon-link\\\" viewBox=\\\"0 0 16 16\\\" version=\\\"1.1\\\" width=\\\"16\\\" height=\\\"16\\\" aria-hidden=\\\"true\\\"><path fill-rule=\\\"evenodd\\\" d=\\\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\\\"></path></svg></a>기대효과</h2>\\n<div align=\\\"center\\\" dir=\\\"auto\\\">\\n    <a target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\" href=\\\"https://user-images.githubusercontent.com/74395748/139580421-52a703d0-b127-4ffc-9f58-2735c335891d.png\\\"><img src=\\\"https://user-images.githubusercontent.com/74395748/139580421-52a703d0-b127-4ffc-9f58-2735c335891d.png\\\" style=\\\"max-width: 100%;\\\"></a>\\n</div>\\n<div align=\\\"center\\\" dir=\\\"auto\\\">\\n    <a target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\" href=\\\"https://user-images.githubusercontent.com/74395748/139580397-a6321de5-646d-4564-b498-203f0c42cbe8.png\\\"><img src=\\\"https://user-images.githubusercontent.com/74395748/139580397-a6321de5-646d-4564-b498-203f0c42cbe8.png\\\" style=\\\"max-width: 100%;\\\"></a>\\n</div>\\n</article></div>\",\r\n        \"link\": \"https://github.com/dmin0211/Web_Buxi\",\r\n        \"info\": {\r\n            \"starCount\": 0,\r\n            \"forkCount\": 0,\r\n            \"language\": {\r\n                \"Vue\": 80.58,\r\n                \"JavaScript\": 17.01,\r\n                \"HTML\": 2.4\r\n            }\r\n        },\r\n        \"identity\": \"dmin0211\",\r\n        \"target\": \"Web_Buxi\"\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/posts/","description":"<p>title: 필요시에만 사용 (타임라인글은 안넣을거라 예상)\nuserID: Oid (User)\nlink: 필요시에만 사용</p>\n","urlObject":{"path":["v1","posts",""],"host":["http://localhost:3001"],"query":[],"variable":[]}},"response":[{"id":"94a2011e-899e-44c2-a7e3-b9d941db08f8","name":"Tistory 글쓰기","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"title\": \"양방향 통신(polling, long polling, websocket)\",\r\n    \"type\": \"external\",\r\n    \"userID\": \"6194d078928b431f065e0997\",\r\n    \"content\": \"이게 되나??\",\r\n    \"external\": {\r\n        \"link\": \"http://blog.dongmin.dev\",\r\n        \"type\": \"tistory\",\r\n        \"identity\": \"dongmin-tech\",\r\n        \"target\": \"14\",\r\n        \"content\": \"<h4 data-ke-size=\\\"size20\\\"><b>Polling</b></h4>\\n<p data-ke-size=\\\"size16\\\">Polling 방식은 간단하게 특정 시간마다 클라이언트에서 서버로 요청을 하며 응답을 통해 데이터를 갱신합니다. 즉, 아무런 server의 event 가 발생하지 않더라도 모든 클라이언트는 지속적으로 server에게 XMLHttpRequest를 보내게 됩니다. 또한 실시간으로 메시지 전달이 필요한 경우 요청을 보내는 주기가 짧아질 것입니다. 이는 서버의 불필요한 트래픽이 발생합니다.</p>\\n<p data-ke-size=\\\"size16\\\">매 주기마다 서버는 Request의 Header parser 하며, query를 통해 새로운 데이터에 대한 응답을 생성해서 보낼 것입니다. 그 후 서버는 모든 리소스에 대한 정리 작업도 진행해야 할 것입니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<h4 data-ke-size=\\\"size20\\\"><b>Long Polling</b></h4>\\n<p data-ke-size=\\\"size16\\\">기존 양방향 통신으로 사용되는 polling 방식보다 효율적인 방식의 기법입니다.</p>\\n<p data-ke-size=\\\"size16\\\">서버에 주기적으로 요청을 보내는 방식이 아닌 서버에서 클라이언트의 연결을 Keep Alive 헤더를 통해 유지하는 방식입니다.</p>\\n<p data-ke-size=\\\"size16\\\"><b>동작 방식</b></p>\\n<p><figure class='imageblock alignLeft' data-origin-width=\\\"1132\\\" data-origin-height=\\\"896\\\" data-filename=\\\"longpolling.png\\\" width=\\\"394\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"><span data-url='https://blog.kakaocdn.net/dn/wayei/btriDxzznNK/JtMHNogKkthQ3z7sCUFI80/img.png' data-lightbox='lightbox' data-alt=''><img src='https://blog.kakaocdn.net/dn/wayei/btriDxzznNK/JtMHNogKkthQ3z7sCUFI80/img.png' srcset='https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwayei%2FbtriDxzznNK%2FJtMHNogKkthQ3z7sCUFI80%2Fimg.png' data-origin-width=\\\"1132\\\" data-origin-height=\\\"896\\\" data-filename=\\\"longpolling.png\\\" width=\\\"394\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"></span></figure></p>\\n<ul style=\\\"list-style-type: disc;\\\" data-ke-list-type=\\\"disc\\\">\\n<li>우선 Client는 Server로 Keep Alive 헤더를 포함한 GET request를 보내며 응답을 받을 때까지 연결을 유지합니다.</li>\\n<li>Server의 Event 가 발생 시 Client의 GET request에 대해서 응답을 보내게 됩니다.</li>\\n<li>응답을 받은 Client는 다시 동일한 GET request를 보내며 다음 응답을 기다립니다.</li>\\n</ul>\\n<p data-ke-size=\\\"size16\\\">확실히 Server Event 발생 시에만 XMLHttpRequest 가 발생하며 불필요한 트래픽이 발생하지 않으며 실시간 메시지 전달이 가능합니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<p data-ke-size=\\\"size16\\\"><b>단점</b></p>\\n<p data-ke-size=\\\"size16\\\">하지만 주기적으로 데이터들을 한 번에 보내는 polling과 달리 Server Event 시마다 Server의 응답, Client의 GET 요청이 발생합니다. 당연히 서버는 동일하게 HTTP request의 header parser 작업과 응답 객체의 생성 작업을 거칩니다. 즉, 실시간으로 잦은 서버 상태 변경의 요청 즉 caching 되지 않는 request 통신이 이루어지는 경우 polling 보다 더 많은 트래픽이 발생할 수 있습니다.</p>\\n<p data-ke-size=\\\"size16\\\">추가적으로 relative message order의 문제점도 존재합니다.</p>\\n<p><figure class='imageblock alignLeft' data-origin-width=\\\"1024\\\" data-origin-height=\\\"784\\\" data-filename=\\\"cons1.png\\\" width=\\\"457\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"><span data-url='https://blog.kakaocdn.net/dn/dejRWc/btriDxNa1dm/nVRQa4jWRk2cAKRSs4sjZ0/img.png' data-lightbox='lightbox' data-alt=''><img src='https://blog.kakaocdn.net/dn/dejRWc/btriDxNa1dm/nVRQa4jWRk2cAKRSs4sjZ0/img.png' srcset='https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdejRWc%2FbtriDxNa1dm%2FnVRQa4jWRk2cAKRSs4sjZ0%2Fimg.png' data-origin-width=\\\"1024\\\" data-origin-height=\\\"784\\\" data-filename=\\\"cons1.png\\\" width=\\\"457\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"></span></figure></p>\\n<p data-ke-size=\\\"size16\\\">동일한 서버 리소스를 사용하는 클라이언트가 다중 탭으로 동일한 요청을 보내고 해당 요청에 대해서 서버가 Database 작업을 수행한다면 중복 데이터가 2번 저장 혹은 갱신되게 됩니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<p><figure class='imageblock alignLeft' data-origin-width=\\\"1046\\\" data-origin-height=\\\"810\\\" data-filename=\\\"cons2.png\\\" width=\\\"452\\\" height=\\\"350\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"><span data-url='https://blog.kakaocdn.net/dn/DV44W/btriHBVwqOO/wEVKOV8Z9ocXOEgwMWKhK0/img.png' data-lightbox='lightbox' data-alt=''><img src='https://blog.kakaocdn.net/dn/DV44W/btriHBVwqOO/wEVKOV8Z9ocXOEgwMWKhK0/img.png' srcset='https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDV44W%2FbtriHBVwqOO%2FwEVKOV8Z9ocXOEgwMWKhK0%2Fimg.png' data-origin-width=\\\"1046\\\" data-origin-height=\\\"810\\\" data-filename=\\\"cons2.png\\\" width=\\\"452\\\" height=\\\"350\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"></span></figure></p>\\n<p data-ke-size=\\\"size16\\\">또한 서버의 구현에 따라 클라이언트 인스턴스가 메시지 수신을 전혀 하지 못하는 경우가 있습니다. Server event 가 발생하여 응답을 보냈으나 네트워크, 브라우저의 문제 등의 경우로 누락된 경우 Client 가 정상적으로 응답받은 것을 확인하지 못하게 될 것입니다. Client 역시 응답이 중간에 누락된 것을 확인하지 못하고 더 이상 server 와의 통신이 이루어질 수 없을 것입니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<h4 data-ke-size=\\\"size20\\\"><b>Websocket</b></h4>\\n<p data-ke-size=\\\"size16\\\"><b>동작 방식</b></p>\\n<p data-ke-size=\\\"size16\\\">websocket 은 기존의 http protocol 요청을 사용한 양방향 통신(클라이언트가 요청이 없으면 서버에게 응답을 받을 수 없는 구조)을 문제를 해결하기 위해 나온 transport protocol입니다.</p>\\n<p data-ke-size=\\\"size16\\\">처음 서버와 클라이언트 간 http protocol 요청을 통해 handshake 과정을 거칩니다. 웹소켓 연결이 가능함을 handshake 과정에서 판단되면 서버와 클라이언트는 ws protocol로 데이터를 전송할 수 있습니다. 이때 데이터 전송에서 기존 http protocol 양방향 통신 방식의 문제 중 하나인 request header 정보로 인한 불필요한 overhead 가 적습니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<p data-ke-size=\\\"size16\\\"><b>단점</b></p>\\n<ul style=\\\"list-style-type: disc;\\\" data-ke-list-type=\\\"disc\\\">\\n<li>우선 2011 년 이전의 브라우저는 지원하지 않는 단점이 있습니다.</li>\\n<li>stateful protocol 이므로 연결의 종료에 대해서 서버에서 적절한 대처가 있어야 합니다.</li>\\n<li>소켓을 연결을 유지하는 것만으로 비용이 듭니다. 실시간으로 통신을 유지해야 하는 경우가 아니라면 http protocol 방식이 유용할 것입니다.</li>\\n</ul>\\n<h4 data-ke-size=\\\"size20\\\"><a href=\\\"http://Socket.io\\\">Socket.io</a></h4>\\n<p data-ke-size=\\\"size16\\\">websocket의 추가적인 단점은 개발의 피로도입니다. 이러한 피로도를 줄여주는 라이브러리가 <a href=\\\"http://socket.io\\\">Socket.io 입니다.</a> <a href=\\\"http://Socket.io\\\">Socket.io</a> <a href=\\\"%5B%3Chttps://socket.io/docs/v3/how-it-works/%3E%5D(%3Chttps://socket.io/docs/v3/how-it-works/%3E)\\\">How it works</a> 글을 읽어보면 기본 Client와 Server의 연결 방식의 설정은 long polling 방식입니다. 그러한 이유는 Websocket 방식은 브라우저 버전, 프락시, 개인 방화벽, 바이러스 백신 소프트웨어로 인해 항상 연결이 가능한 것은 아닙니다. 그 후 Websocket upgrade 가 가능하다면 Websocket 방식을 사용합니다.</p>\\n<p data-ke-size=\\\"size16\\\">이 글의 내용을 확인해 봤을 때 <a href=\\\"http://Socket.io\\\">Socket.io</a> 라이브러리는 Websocket 방식의 fallback으로 long polling 방식을 사용하고 있습니다. 하지만 long polling 방식은 위에서 확인한 것과 같이 단점이 존재하며 그것은 Websocket 방식 역시 마찬가지입니다.</p>\\n<p data-ke-size=\\\"size16\\\">마지막으로 필자의 생각입니다. 아직 각 양방향 통신의 단점을 완전히 해결할 수 있는 방식이 나오지 않았고 가능한지도 짐작할 수 없습니다. 현재로서는 구현하고 있는 서비스에 대한 알맞은 통신 방식을 선정하여 <a href=\\\"http://Socket.io\\\">Socket.io</a> fallback 설정을 하는 것을 생각해봐야 할 것 같습니다.</p>\"\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/posts/"},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": {\n        \"_id\": \"619b48d444a6bf170fb509fe\",\n        \"title\": \"양방향 통신(polling, long polling, websocket)\",\n        \"content\": \"이게 되나??\",\n        \"tags\": [],\n        \"type\": \"external\",\n        \"external\": {\n            \"content\": \"<h4 data-ke-size=\\\"size20\\\"><b>Polling</b></h4>\\n<p data-ke-size=\\\"size16\\\">Polling 방식은 간단하게 특정 시간마다 클라이언트에서 서버로 요청을 하며 응답을 통해 데이터를 갱신합니다. 즉, 아무런 server의 event 가 발생하지 않더라도 모든 클라이언트는 지속적으로 server에게 XMLHttpRequest를 보내게 됩니다. 또한 실시간으로 메시지 전달이 필요한 경우 요청을 보내는 주기가 짧아질 것입니다. 이는 서버의 불필요한 트래픽이 발생합니다.</p>\\n<p data-ke-size=\\\"size16\\\">매 주기마다 서버는 Request의 Header parser 하며, query를 통해 새로운 데이터에 대한 응답을 생성해서 보낼 것입니다. 그 후 서버는 모든 리소스에 대한 정리 작업도 진행해야 할 것입니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<h4 data-ke-size=\\\"size20\\\"><b>Long Polling</b></h4>\\n<p data-ke-size=\\\"size16\\\">기존 양방향 통신으로 사용되는 polling 방식보다 효율적인 방식의 기법입니다.</p>\\n<p data-ke-size=\\\"size16\\\">서버에 주기적으로 요청을 보내는 방식이 아닌 서버에서 클라이언트의 연결을 Keep Alive 헤더를 통해 유지하는 방식입니다.</p>\\n<p data-ke-size=\\\"size16\\\"><b>동작 방식</b></p>\\n<p><figure class='imageblock alignLeft' data-origin-width=\\\"1132\\\" data-origin-height=\\\"896\\\" data-filename=\\\"longpolling.png\\\" width=\\\"394\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"><span data-url='https://blog.kakaocdn.net/dn/wayei/btriDxzznNK/JtMHNogKkthQ3z7sCUFI80/img.png' data-lightbox='lightbox' data-alt=''><img src='https://blog.kakaocdn.net/dn/wayei/btriDxzznNK/JtMHNogKkthQ3z7sCUFI80/img.png' srcset='https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwayei%2FbtriDxzznNK%2FJtMHNogKkthQ3z7sCUFI80%2Fimg.png' data-origin-width=\\\"1132\\\" data-origin-height=\\\"896\\\" data-filename=\\\"longpolling.png\\\" width=\\\"394\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"></span></figure></p>\\n<ul style=\\\"list-style-type: disc;\\\" data-ke-list-type=\\\"disc\\\">\\n<li>우선 Client는 Server로 Keep Alive 헤더를 포함한 GET request를 보내며 응답을 받을 때까지 연결을 유지합니다.</li>\\n<li>Server의 Event 가 발생 시 Client의 GET request에 대해서 응답을 보내게 됩니다.</li>\\n<li>응답을 받은 Client는 다시 동일한 GET request를 보내며 다음 응답을 기다립니다.</li>\\n</ul>\\n<p data-ke-size=\\\"size16\\\">확실히 Server Event 발생 시에만 XMLHttpRequest 가 발생하며 불필요한 트래픽이 발생하지 않으며 실시간 메시지 전달이 가능합니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<p data-ke-size=\\\"size16\\\"><b>단점</b></p>\\n<p data-ke-size=\\\"size16\\\">하지만 주기적으로 데이터들을 한 번에 보내는 polling과 달리 Server Event 시마다 Server의 응답, Client의 GET 요청이 발생합니다. 당연히 서버는 동일하게 HTTP request의 header parser 작업과 응답 객체의 생성 작업을 거칩니다. 즉, 실시간으로 잦은 서버 상태 변경의 요청 즉 caching 되지 않는 request 통신이 이루어지는 경우 polling 보다 더 많은 트래픽이 발생할 수 있습니다.</p>\\n<p data-ke-size=\\\"size16\\\">추가적으로 relative message order의 문제점도 존재합니다.</p>\\n<p><figure class='imageblock alignLeft' data-origin-width=\\\"1024\\\" data-origin-height=\\\"784\\\" data-filename=\\\"cons1.png\\\" width=\\\"457\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"><span data-url='https://blog.kakaocdn.net/dn/dejRWc/btriDxNa1dm/nVRQa4jWRk2cAKRSs4sjZ0/img.png' data-lightbox='lightbox' data-alt=''><img src='https://blog.kakaocdn.net/dn/dejRWc/btriDxNa1dm/nVRQa4jWRk2cAKRSs4sjZ0/img.png' srcset='https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdejRWc%2FbtriDxNa1dm%2FnVRQa4jWRk2cAKRSs4sjZ0%2Fimg.png' data-origin-width=\\\"1024\\\" data-origin-height=\\\"784\\\" data-filename=\\\"cons1.png\\\" width=\\\"457\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"></span></figure></p>\\n<p data-ke-size=\\\"size16\\\">동일한 서버 리소스를 사용하는 클라이언트가 다중 탭으로 동일한 요청을 보내고 해당 요청에 대해서 서버가 Database 작업을 수행한다면 중복 데이터가 2번 저장 혹은 갱신되게 됩니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<p><figure class='imageblock alignLeft' data-origin-width=\\\"1046\\\" data-origin-height=\\\"810\\\" data-filename=\\\"cons2.png\\\" width=\\\"452\\\" height=\\\"350\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"><span data-url='https://blog.kakaocdn.net/dn/DV44W/btriHBVwqOO/wEVKOV8Z9ocXOEgwMWKhK0/img.png' data-lightbox='lightbox' data-alt=''><img src='https://blog.kakaocdn.net/dn/DV44W/btriHBVwqOO/wEVKOV8Z9ocXOEgwMWKhK0/img.png' srcset='https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDV44W%2FbtriHBVwqOO%2FwEVKOV8Z9ocXOEgwMWKhK0%2Fimg.png' data-origin-width=\\\"1046\\\" data-origin-height=\\\"810\\\" data-filename=\\\"cons2.png\\\" width=\\\"452\\\" height=\\\"350\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"></span></figure></p>\\n<p data-ke-size=\\\"size16\\\">또한 서버의 구현에 따라 클라이언트 인스턴스가 메시지 수신을 전혀 하지 못하는 경우가 있습니다. Server event 가 발생하여 응답을 보냈으나 네트워크, 브라우저의 문제 등의 경우로 누락된 경우 Client 가 정상적으로 응답받은 것을 확인하지 못하게 될 것입니다. Client 역시 응답이 중간에 누락된 것을 확인하지 못하고 더 이상 server 와의 통신이 이루어질 수 없을 것입니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<h4 data-ke-size=\\\"size20\\\"><b>Websocket</b></h4>\\n<p data-ke-size=\\\"size16\\\"><b>동작 방식</b></p>\\n<p data-ke-size=\\\"size16\\\">websocket 은 기존의 http protocol 요청을 사용한 양방향 통신(클라이언트가 요청이 없으면 서버에게 응답을 받을 수 없는 구조)을 문제를 해결하기 위해 나온 transport protocol입니다.</p>\\n<p data-ke-size=\\\"size16\\\">처음 서버와 클라이언트 간 http protocol 요청을 통해 handshake 과정을 거칩니다. 웹소켓 연결이 가능함을 handshake 과정에서 판단되면 서버와 클라이언트는 ws protocol로 데이터를 전송할 수 있습니다. 이때 데이터 전송에서 기존 http protocol 양방향 통신 방식의 문제 중 하나인 request header 정보로 인한 불필요한 overhead 가 적습니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<p data-ke-size=\\\"size16\\\"><b>단점</b></p>\\n<ul style=\\\"list-style-type: disc;\\\" data-ke-list-type=\\\"disc\\\">\\n<li>우선 2011 년 이전의 브라우저는 지원하지 않는 단점이 있습니다.</li>\\n<li>stateful protocol 이므로 연결의 종료에 대해서 서버에서 적절한 대처가 있어야 합니다.</li>\\n<li>소켓을 연결을 유지하는 것만으로 비용이 듭니다. 실시간으로 통신을 유지해야 하는 경우가 아니라면 http protocol 방식이 유용할 것입니다.</li>\\n</ul>\\n<h4 data-ke-size=\\\"size20\\\"><a href=\\\"http://Socket.io\\\">Socket.io</a></h4>\\n<p data-ke-size=\\\"size16\\\">websocket의 추가적인 단점은 개발의 피로도입니다. 이러한 피로도를 줄여주는 라이브러리가 <a href=\\\"http://socket.io\\\">Socket.io 입니다.</a> <a href=\\\"http://Socket.io\\\">Socket.io</a> <a href=\\\"%5B%3Chttps://socket.io/docs/v3/how-it-works/%3E%5D(%3Chttps://socket.io/docs/v3/how-it-works/%3E)\\\">How it works</a> 글을 읽어보면 기본 Client와 Server의 연결 방식의 설정은 long polling 방식입니다. 그러한 이유는 Websocket 방식은 브라우저 버전, 프락시, 개인 방화벽, 바이러스 백신 소프트웨어로 인해 항상 연결이 가능한 것은 아닙니다. 그 후 Websocket upgrade 가 가능하다면 Websocket 방식을 사용합니다.</p>\\n<p data-ke-size=\\\"size16\\\">이 글의 내용을 확인해 봤을 때 <a href=\\\"http://Socket.io\\\">Socket.io</a> 라이브러리는 Websocket 방식의 fallback으로 long polling 방식을 사용하고 있습니다. 하지만 long polling 방식은 위에서 확인한 것과 같이 단점이 존재하며 그것은 Websocket 방식 역시 마찬가지입니다.</p>\\n<p data-ke-size=\\\"size16\\\">마지막으로 필자의 생각입니다. 아직 각 양방향 통신의 단점을 완전히 해결할 수 있는 방식이 나오지 않았고 가능한지도 짐작할 수 없습니다. 현재로서는 구현하고 있는 서비스에 대한 알맞은 통신 방식을 선정하여 <a href=\\\"http://Socket.io\\\">Socket.io</a> fallback 설정을 하는 것을 생각해봐야 할 것 같습니다.</p>\",\n            \"link\": \"http://blog.dongmin.dev\",\n            \"type\": \"tistory\",\n            \"identity\": \"dongmin-tech\",\n            \"target\": \"14\"\n        },\n        \"createdAt\": \"2021-11-22T07:37:56.558Z\",\n        \"updatedAt\": \"2021-11-22T07:37:56.558Z\",\n        \"user\": {\n            \"_id\": \"6194d078928b431f065e0997\",\n            \"username\": \"kdmin0211\",\n            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/YucySHrnR01g76PMCtSJ6.jpeg\"\n        },\n        \"comments\": [],\n        \"likes\": [],\n        \"images\": []\n    }\n}"},{"id":"eae4e23d-efb5-48a8-9622-3849575f4d37","name":"포스트 작성","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"type\": \"normal\",\r\n    \"content\": \"스키마 변경 완료\",\r\n    \"userID\": \"6194d078928b431f065e0997\",\r\n    \"images\": [\"https://kr.object.ncloudstorage.com/cocoo/posts/ENtuwpl_hJzDuWBq7euvc.png\"]\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/posts/"},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": {\n        \"_id\": \"619a35fc1f7d593b3359dd1b\",\n        \"content\": \"스키마 변경 완료\",\n        \"tags\": [],\n        \"type\": \"normal\",\n        \"createdAt\": \"2021-11-21T12:05:16.861Z\",\n        \"updatedAt\": \"2021-11-21T12:05:16.861Z\",\n        \"user\": {\n            \"_id\": \"6194d078928b431f065e0997\",\n            \"username\": \"kdmin0211\",\n            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/YucySHrnR01g76PMCtSJ6.jpeg\"\n        },\n        \"comments\": [],\n        \"likes\": [],\n        \"images\": [\n            {\n                \"_id\": \"619a35fc1f7d593b3359dd1e\",\n                \"url\": \"https://kr.object.ncloudstorage.com/cocoo/posts/ENtuwpl_hJzDuWBq7euvc.png\"\n            }\n        ]\n    }\n}"},{"id":"5ee0df57-f3cc-4c54-9167-7a2afa5f9d9d","name":"백준 문제 연동","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"title\": \"양방향 통신(polling, long polling, websocket)\",\r\n    \"type\": \"algorithm\",\r\n    \"content\": \"알고리즘 너무 어렵네요...\",\r\n    \"userID\": \"6194d078928b431f065e0997\",\r\n    \"external\": {\r\n        \"type\": \"algorithm\",\r\n        \"identity\": \"baekjoon\",\r\n        \"target\": \"1010\",\r\n        \"content\": \"<p>재원이는 한 도시의 시장이 되었다. 이 도시에는&nbsp;도시를 동쪽과 서쪽으로 나누는 큰 일직선 모양의 강이 흐르고 있다.&nbsp;하지만 재원이는 다리가 없어서 시민들이 강을 건너는데 큰 불편을 겪고 있음을 알고 다리를 짓기로 결심하였다. 강 주변에서 다리를 짓기에 적합한 곳을 사이트라고 한다. 재원이는 강 주변을 면밀히 조사해 본 결과 강의 서쪽에는 N개의 사이트가 있고 동쪽에는 M개의 사이트가 있다는 것을 알았다. (N ≤ M)</p>\\n\\n<p>재원이는 서쪽의 사이트와 동쪽의 사이트를 다리로 연결하려고 한다. (이때 한 사이트에는 최대 한 개의 다리만 연결될 수 있다.) 재원이는 다리를 최대한 많이 지으려고 하기 때문에 서쪽의 사이트 개수만큼 (N개) 다리를 지으려고 한다. 다리끼리는 서로 겹쳐질 수 없다고 할 때 다리를 지을 수 있는 경우의 수를 구하는 프로그램을 작성하라.</p>\\n\\n<p><img alt=\\\"\\\" src=\\\"/upload/201003/pic1.JPG\\\" style=\\\"height:353px; width:329px\\\"></p>\",\r\n        \"link\": \"https://www.acmicpc.net/problem/1010\",\r\n        \"info\": {\r\n            \"solvedUserCount\": 15751,\r\n            \"totalTryCount\": 32774,\r\n            \"tear\": \"Silver5\"\r\n        }\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/posts/"},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": {\n        \"_id\": \"619a354a1f7d593b3359dd0f\",\n        \"title\": \"양방향 통신(polling, long polling, websocket)\",\n        \"content\": \"알고리즘 너무 어렵네요...\",\n        \"tags\": [],\n        \"type\": \"algorithm\",\n        \"link\": \"https://www.acmicpc.net/problem/1011\",\n        \"externalContent\": \"<p>우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내려 놓은 지 23년이 지난 지금, 세계 최연소 ASNA 우주 비행사가 되어 새로운 세계에 발을 내려 놓는 영광의 순간을 기다리고 있다.</p>\\n\\n<p>그가 탑승하게 될 우주선은 Alpha Centauri라는 새로운 인류의 보금자리를 개척하기 위한&nbsp;대규모 생활 유지 시스템을 탑재하고 있기 때문에, 그 크기와 질량이 엄청난 이유로 최신기술력을 총 동원하여 개발한 공간이동 장치를 탑재하였다. 하지만 이 공간이동 장치는 이동 거리를 급격하게 늘릴 경우 기계에 심각한 결함이 발생하는 단점이 있어서, 이전 작동시기에 k광년을 이동하였을 때는 k-1 , k 혹은 k+1 광년만을 다시 이동할 수 있다. 예를 들어, 이 장치를 처음 작동시킬 경우 -1 , 0 , 1 광년을 이론상 이동할 수 있으나 사실상 음수 혹은 0 거리만큼의 이동은 의미가 없으므로 1 광년을 이동할 수 있으며, 그 다음에는 0 , 1 , 2 광년을 이동할 수 있는 것이다. ( 여기서 다시 2광년을 이동한다면 다음 시기엔 1, 2, 3 광년을 이동할 수 있다. )</p>\\n\\n<p><img alt=\\\"\\\" src=\\\"/upload/201003/rlaehdgur.JPG\\\" style=\\\"height:164px; width:626px\\\"></p>\\n\\n<p>김우현은 공간이동 장치 작동시의 에너지 소모가 크다는 점을 잘 알고 있기 때문에 x지점에서&nbsp;y지점을 향해 최소한의 작동 횟수로 이동하려 한다. 하지만 y지점에 도착해서도 공간 이동장치의 안전성을 위하여 y지점에 도착하기 바로 직전의 이동거리는 반드시 1광년으로 하려 한다.</p>\\n\\n<p>김우현을 위해 x지점부터 정확히 y지점으로 이동하는데 필요한 공간 이동 장치 작동 횟수의&nbsp;최솟값을 구하는 프로그램을 작성하라.</p>\",\n        \"external\": {\n            \"type\": \"algorithm\",\n            \"identity\": \"baekjon\",\n            \"target\": \"1011\"\n        },\n        \"createdAt\": \"2021-11-21T12:02:18.872Z\",\n        \"updatedAt\": \"2021-11-21T12:02:18.872Z\",\n        \"user\": {\n            \"_id\": \"6194d078928b431f065e0997\",\n            \"username\": \"kdmin0211\",\n            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/YucySHrnR01g76PMCtSJ6.jpeg\"\n        },\n        \"comments\": [],\n        \"likes\": [],\n        \"images\": []\n    }\n}"},{"id":"a39285c0-16e5-41ab-8ffa-1a7bdaa1dbd4","name":"깃허브 Repo 연동 포스트 작성","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"type\": \"external\",\r\n    \"content\": \"공모전 깃허브입니다.\",\r\n    \"userID\": \"6194d078928b431f065e0997\",\r\n    \"title\": \"Web_Buxi\",\r\n    \"external\": {\r\n        \"type\": \"repository\",\r\n        \"content\": \"<div id=\\\"readme\\\" class=\\\"md\\\" data-path=\\\"README.md\\\"><article class=\\\"markdown-body entry-content container-lg\\\" itemprop=\\\"text\\\"><div align=\\\"center\\\" dir=\\\"auto\\\">\\n<a target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\" href=\\\"https://user-images.githubusercontent.com/74395748/139573141-fbfeedbf-a4b8-4b34-ba81-26860d334aeb.png\\\"><img width=\\\"497\\\" alt=\\\"Screen Shot 2021-10-31 at 4 33 04 PM\\\" src=\\\"https://user-images.githubusercontent.com/74395748/139573141-fbfeedbf-a4b8-4b34-ba81-26860d334aeb.png\\\" style=\\\"max-width: 100%;\\\"></a>\\n</div>\\n<div align=\\\"center\\\" dir=\\\"auto\\\">\\n    <p dir=\\\"auto\\\">\\n        Buxi = Bus + Taxi<br>\\n        스마트 하게 호출하는<br>\\n        커뮤니티 모빌리티 서비스\\n    </p>\\n</div>\\n<h2 dir=\\\"auto\\\"><a id=\\\"user-content-개요\\\" class=\\\"anchor\\\" aria-hidden=\\\"true\\\" href=\\\"#개요\\\"><svg class=\\\"octicon octicon-link\\\" viewBox=\\\"0 0 16 16\\\" version=\\\"1.1\\\" width=\\\"16\\\" height=\\\"16\\\" aria-hidden=\\\"true\\\"><path fill-rule=\\\"evenodd\\\" d=\\\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\\\"></path></svg></a>개요</h2>\\n<p dir=\\\"auto\\\">현대인들이 많이 이용하는 대중교통 수단인 버스는 배차간격과 노선이 일정하다 하지만 출퇴근 시간처럼 승객이 많은 시간대가 있고 그렇지 않은 시간대가 있어 불필요한 운행을 하는 버스가 존재한다. 버스의 운행시간과 노선을 경로 최적화를 통해 승객의 수요에 따라 유동적으로 설정함으로써 공(空)버스를 최소화해 탄소 배출량의 감소시키는 것을 목표로 한다.</p>\\n<h2 dir=\\\"auto\\\"><a id=\\\"user-content-공공데이터\\\" class=\\\"anchor\\\" aria-hidden=\\\"true\\\" href=\\\"#공공데이터\\\"><svg class=\\\"octicon octicon-link\\\" viewBox=\\\"0 0 16 16\\\" version=\\\"1.1\\\" width=\\\"16\\\" height=\\\"16\\\" aria-hidden=\\\"true\\\"><path fill-rule=\\\"evenodd\\\" d=\\\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\\\"></path></svg></a>공공데이터</h2>\\n<ul dir=\\\"auto\\\">\\n<li>서울특별시 버스정류장 위치 정보\\n<ul dir=\\\"auto\\\">\\n<li>웹앱 서비스 제공에 사용되는 데이터</li>\\n</ul>\\n</li>\\n<li>서울시 버스노선별 정류장별 시간대별 승하차 인원 정보\\n<ul dir=\\\"auto\\\">\\n<li>기대효과 도출에 사용되는 데이터</li>\\n</ul>\\n</li>\\n</ul>\\n<h2 dir=\\\"auto\\\"><a id=\\\"user-content-buxi-server\\\" class=\\\"anchor\\\" aria-hidden=\\\"true\\\" href=\\\"#buxi-server\\\"><svg class=\\\"octicon octicon-link\\\" viewBox=\\\"0 0 16 16\\\" version=\\\"1.1\\\" width=\\\"16\\\" height=\\\"16\\\" aria-hidden=\\\"true\\\"><path fill-rule=\\\"evenodd\\\" d=\\\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\\\"></path></svg></a>Buxi Server</h2>\\n<p dir=\\\"auto\\\"><a href=\\\"https://github.com/kalgory/Web_Buxi-Server\\\">Github Server Repository</a></p>\\n<h2 dir=\\\"auto\\\"><a id=\\\"user-content-user-flow\\\" class=\\\"anchor\\\" aria-hidden=\\\"true\\\" href=\\\"#user-flow\\\"><svg class=\\\"octicon octicon-link\\\" viewBox=\\\"0 0 16 16\\\" version=\\\"1.1\\\" width=\\\"16\\\" height=\\\"16\\\" aria-hidden=\\\"true\\\"><path fill-rule=\\\"evenodd\\\" d=\\\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\\\"></path></svg></a>User Flow</h2>\\n<div align=\\\"center\\\" dir=\\\"auto\\\">\\n    <a target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\" href=\\\"https://user-images.githubusercontent.com/64261939/119088107-1900f380-ba43-11eb-9227-2127a2985516.png\\\"><img src=\\\"https://user-images.githubusercontent.com/64261939/119088107-1900f380-ba43-11eb-9227-2127a2985516.png\\\" style=\\\"max-width: 100%;\\\"></a>\\n</div>\\n<h2 dir=\\\"auto\\\"><a id=\\\"user-content-시연\\\" class=\\\"anchor\\\" aria-hidden=\\\"true\\\" href=\\\"#시연\\\"><svg class=\\\"octicon octicon-link\\\" viewBox=\\\"0 0 16 16\\\" version=\\\"1.1\\\" width=\\\"16\\\" height=\\\"16\\\" aria-hidden=\\\"true\\\"><path fill-rule=\\\"evenodd\\\" d=\\\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\\\"></path></svg></a>시연</h2>\\n<div align=\\\"center\\\" dir=\\\"auto\\\">\\n    <a target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\" href=\\\"https://user-images.githubusercontent.com/74395748/139580393-b0bfcc0c-20db-41ae-b8fc-9afe91aa9ed7.png\\\"><img src=\\\"https://user-images.githubusercontent.com/74395748/139580393-b0bfcc0c-20db-41ae-b8fc-9afe91aa9ed7.png\\\" style=\\\"max-width: 100%;\\\"></a>\\n</div>\\n<h2 dir=\\\"auto\\\"><a id=\\\"user-content-기대효과\\\" class=\\\"anchor\\\" aria-hidden=\\\"true\\\" href=\\\"#기대효과\\\"><svg class=\\\"octicon octicon-link\\\" viewBox=\\\"0 0 16 16\\\" version=\\\"1.1\\\" width=\\\"16\\\" height=\\\"16\\\" aria-hidden=\\\"true\\\"><path fill-rule=\\\"evenodd\\\" d=\\\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\\\"></path></svg></a>기대효과</h2>\\n<div align=\\\"center\\\" dir=\\\"auto\\\">\\n    <a target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\" href=\\\"https://user-images.githubusercontent.com/74395748/139580421-52a703d0-b127-4ffc-9f58-2735c335891d.png\\\"><img src=\\\"https://user-images.githubusercontent.com/74395748/139580421-52a703d0-b127-4ffc-9f58-2735c335891d.png\\\" style=\\\"max-width: 100%;\\\"></a>\\n</div>\\n<div align=\\\"center\\\" dir=\\\"auto\\\">\\n    <a target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\" href=\\\"https://user-images.githubusercontent.com/74395748/139580397-a6321de5-646d-4564-b498-203f0c42cbe8.png\\\"><img src=\\\"https://user-images.githubusercontent.com/74395748/139580397-a6321de5-646d-4564-b498-203f0c42cbe8.png\\\" style=\\\"max-width: 100%;\\\"></a>\\n</div>\\n</article></div>\",\r\n        \"link\": \"https://github.com/dmin0211/Web_Buxi\",\r\n        \"info\": {\r\n            \"starCount\": 0,\r\n            \"forkCount\": 0,\r\n            \"language\": {\r\n                \"Vue\": 80.58,\r\n                \"JavaScript\": 17.01,\r\n                \"HTML\": 2.4\r\n            }\r\n        },\r\n        \"identity\": \"dmin0211\",\r\n        \"target\": \"Web_Buxi\"\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/posts/"},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": {\n        \"_id\": \"619b81ad89c4ba77b29096c3\",\n        \"title\": \"WEB26-COKIRI\",\n        \"content\": \"깃허브 연동입니다\",\n        \"tags\": [],\n        \"type\": \"external\",\n        \"external\": {\n            \"content\": \"<div align=\\\"center\\\">\\n    <a href=\\\"https://github.com/boostcampwm-2021/WEB26-COKIRI\\\">\\n    <img width=\\\"500\\\" src=\\\"https://user-images.githubusercontent.com/74395748/139043672-3e2cd88c-35e4-4d5f-8ca1-99766b1e4496.png\\\" />\\n    </a>\\n</div>\\n\\n\\n<p align=\\\"center\\\">\\n    <a href=\\\"/\\\"><img src=\\\"https://img.shields.io/badge/node-16.13.0-9181d6?logo=node.js\\\" alt=\\\"\\\"></a>\\n    <a href=\\\"/\\\"><img src=\\\"https://img.shields.io/badge/npm-8.1.0-9181D6?logo=npm\\\" alt=\\\"\\\"></a>\\n    <a href=\\\"/\\\"><img src=\\\"https://img.shields.io/badge/express-4.17.1-9181D6?logo=express\\\" alt=\\\"\\\"></a>\\n    <a href=\\\"/\\\"><img src=\\\"https://img.shields.io/badge/ubuntu-18.04-9181D6?logo=ubuntu\\\" alt=\\\"\\\"></a>\\n    <a href=\\\"/\\\"><img src=\\\"https://img.shields.io/badge/react-17.0.2-9181D6?logo=react\\\" alt=\\\"\\\"></a>\\n    <br>\\n    <a href=\\\"/\\\"><img src=\\\"https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2Fboostcampwm-2021%2FWEB26-COKIRI&count_bg=%239181D6&title_bg=%23555555&icon=&icon_color=%239181D6&title=&edge_flat=false\\\"/></a>\\n</p>\\n\\n<div align=\\\"center\\\">\\n<h2>\\n개발, 이제 관심을 받다.\\n</h2>\\n\\n<p>일상을 쉽게 공유하지 못하는 개발자를 위한 SNS.<br>\\n몇번의 클릭으로 다른 개발자의 흔적을 볼 수 있다.<br>\\n그리고<br>\\n코쿠(COCOO)는 개발자의 흩어진 노력을 모아준다.</p>\\n\\n</div>\\n\\n## 💧 링크\\n\\n- [배포](/)\\n- [데모 영상](/)\\n- [노션](https://pool-storm-1a3.notion.site/b1de384e2f8c47948ee4b347bda6de04)\\n- [디자인](https://miro.com/app/board/o9J_lnmq-7Y=/?invite_link_id=740345289660)\\n- [기획](https://miro.com/app/board/o9J_lnnTacc=/?invite_link_id=874331551230)\\n- [백로그](https://docs.google.com/spreadsheets/d/14WwTBta7pvPAq2TPi0Rga9ThRRph-Lt7dCHPDHVWlRo/edit?usp=sharing)\\n\\n\\n\\n## ❄️ 기능\\n\\n\\n## 아키텍쳐\\n![아키텍쳐 jpg](https://user-images.githubusercontent.com/34956768/139275197-360f1438-511c-428f-93b3-589ea978de29.jpg)\\n\\n## 스택\\n![스택1](https://user-images.githubusercontent.com/34956768/139271396-dd0cda8b-b31a-4690-a8dd-0565fe3ec2f6.jpg)\\n\\n\\n## 🧊 개발자\\n\\n|     정현민    |     유정한    |    김동민   |     한범석    |\\n| :---------: | :---------: | :--------: | :---------: |\\n|  **티라노**   |   **먼치킨**  |  **고라니** |  **타이거**   |\\n| @hyunmindev | @youjeonghan | @dmin0211 | @beomseok37 |\\n| <img width=200 src=\\\"https://user-images.githubusercontent.com/34956768/139091226-e7e7aa3b-785e-4fce-bec2-7b0178820aa5.png\\\"> | <img width=200 src=\\\"https://user-images.githubusercontent.com/34956768/139091573-17ca9a01-3a0a-448f-8203-faedc34aa2b6.png\\\"> | <img width=200 src=\\\"https://user-images.githubusercontent.com/34956768/139091567-646b32b0-a856-4e6f-9e18-3c62039f99fe.png\\\">| <img width=200 src=\\\"https://user-images.githubusercontent.com/34956768/139091533-cc71d3ea-4c68-4234-bba2-ec83ca74d94a.png\\\"> |\",\n            \"link\": \"https://github.com/youjeonghan/WEB26-COKIRI\",\n            \"info\": {\n                \"starCount\": 0,\n                \"forkCount\": 0,\n                \"language\": {\n                    \"TypeScript\": 89.04,\n                    \"CSS\": 8.3,\n                    \"JavaScript\": 2.66\n                }\n            },\n            \"type\": \"repository\",\n            \"identity\": \"youjeonghan\",\n            \"target\": \"WEB26-COKIRI\"\n        },\n        \"createdAt\": \"2021-11-22T11:40:29.792Z\",\n        \"updatedAt\": \"2021-11-22T11:40:29.792Z\",\n        \"user\": {\n            \"_id\": \"6195daa5856537d371ba17f7\",\n            \"username\": \"codingegg\",\n            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n        },\n        \"comments\": [],\n        \"likes\": [],\n        \"images\": []\n    }\n}"}],"_postman_id":"ef81aad0-4e1f-4c52-a87d-0415f1d32a82"},{"name":"GitHub Repository 리스트","id":"d6b44f62-ae16-4478-8a97-84ffbcf9c8d2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[],"url":"http://localhost:3001/v1/users/:user_id/repositories","urlObject":{"path":["v1","users",":user_id","repositories"],"host":["http://localhost:3001"],"query":[],"variable":[{"description":{"content":"<p>유저 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"6194d078928b431f065e0997","key":"user_id"}]}},"response":[{"id":"c924722f-8baf-4aa8-9e3a-02406482abbd","name":"GitHub Repository 리스트","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/users/:user_id/repositories","host":["http://localhost:3001"],"path":["v1","users",":user_id","repositories"],"variable":[{"key":"user_id","value":"6195daa5856537d371ba17f7","description":"유저 고유 식별자"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": [\n        {\n            \"name\": \"201113_Color-Ball_KDM\",\n            \"url\": \"https://github.com/dmin0211/201113_Color-Ball_KDM\"\n        },\n        {\n            \"name\": \"201120_Ground-Picking_KDM\",\n            \"url\": \"https://github.com/dmin0211/201120_Ground-Picking_KDM\"\n        },\n        {\n            \"name\": \"201126_Way-To-School_KDM\",\n            \"url\": \"https://github.com/dmin0211/201126_Way-To-School_KDM\"\n        },\n        {\n            \"name\": \"201220_Target-Number_KDM\",\n            \"url\": \"https://github.com/dmin0211/201220_Target-Number_KDM\"\n        },\n        {\n            \"name\": \"201229_Integer-Triangle_KDM\",\n            \"url\": \"https://github.com/dmin0211/201229_Integer-Triangle_KDM\"\n        },\n        {\n            \"name\": \"201229_N-Expression_KDM\",\n            \"url\": \"https://github.com/dmin0211/201229_N-Expression_KDM\"\n        },\n        {\n            \"name\": \"2019_kakao_internship_1\",\n            \"url\": \"https://github.com/dmin0211/2019_kakao_internship_1\"\n        },\n        {\n            \"name\": \"2020_kakao_internship_1\",\n            \"url\": \"https://github.com/dmin0211/2020_kakao_internship_1\"\n        },\n        {\n            \"name\": \"2020_kakao_internship_2\",\n            \"url\": \"https://github.com/dmin0211/2020_kakao_internship_2\"\n        },\n        {\n            \"name\": \"210105_Bosster_KDM\",\n            \"url\": \"https://github.com/dmin0211/210105_Bosster_KDM\"\n        },\n        {\n            \"name\": \"210119_2048_KDM\",\n            \"url\": \"https://github.com/dmin0211/210119_2048_KDM\"\n        },\n        {\n            \"name\": \"210119_Island-Connect_KDM\",\n            \"url\": \"https://github.com/dmin0211/210119_Island-Connect_KDM\"\n        },\n        {\n            \"name\": \"210303_Printer-Queue_KDM\",\n            \"url\": \"https://github.com/dmin0211/210303_Printer-Queue_KDM\"\n        },\n        {\n            \"name\": \"210310_Stock-Price_KDM\",\n            \"url\": \"https://github.com/dmin0211/210310_Stock-Price_KDM\"\n        },\n        {\n            \"name\": \"210315_Menu-Renewal_KDM\",\n            \"url\": \"https://github.com/dmin0211/210315_Menu-Renewal_KDM\"\n        },\n        {\n            \"name\": \"210322_Rank-Search_KDM\",\n            \"url\": \"https://github.com/dmin0211/210322_Rank-Search_KDM\"\n        },\n        {\n            \"name\": \"210322_SCPC-Card-Game_KDM\",\n            \"url\": \"https://github.com/dmin0211/210322_SCPC-Card-Game_KDM\"\n        },\n        {\n            \"name\": \"210322_SCPC-Diet_KDM\",\n            \"url\": \"https://github.com/dmin0211/210322_SCPC-Diet_KDM\"\n        },\n        {\n            \"name\": \"210329_Recommend-New-ID_KDM\",\n            \"url\": \"https://github.com/dmin0211/210329_Recommend-New-ID_KDM\"\n        },\n        {\n            \"name\": \"210329_Taxi-Fare_KDM\",\n            \"url\": \"https://github.com/dmin0211/210329_Taxi-Fare_KDM\"\n        },\n        {\n            \"name\": \"210405_Furthest-Node_KDM\",\n            \"url\": \"https://github.com/dmin0211/210405_Furthest-Node_KDM\"\n        },\n        {\n            \"name\": \"210405_Rank_KDM\",\n            \"url\": \"https://github.com/dmin0211/210405_Rank_KDM\"\n        },\n        {\n            \"name\": \"210503_Network_KDM\",\n            \"url\": \"https://github.com/dmin0211/210503_Network_KDM\"\n        },\n        {\n            \"name\": \"210503_Word-Transformation_KDM\",\n            \"url\": \"https://github.com/dmin0211/210503_Word-Transformation_KDM\"\n        },\n        {\n            \"name\": \"210517_Same-Differences_KDM\",\n            \"url\": \"https://github.com/dmin0211/210517_Same-Differences_KDM\"\n        },\n        {\n            \"name\": \"210531_Restoring-the-Permutation_KDM\",\n            \"url\": \"https://github.com/dmin0211/210531_Restoring-the-Permutation_KDM\"\n        },\n        {\n            \"name\": \"basic-crud-test\",\n            \"url\": \"https://github.com/dmin0211/basic-crud-test\"\n        },\n        {\n            \"name\": \"Beakjoon-Problem-Solved\",\n            \"url\": \"https://github.com/dmin0211/Beakjoon-Problem-Solved\"\n        },\n        {\n            \"name\": \"CLI_Warehouse\",\n            \"url\": \"https://github.com/dmin0211/CLI_Warehouse\"\n        },\n        {\n            \"name\": \"Codeforces-Problem-Solved\",\n            \"url\": \"https://github.com/dmin0211/Codeforces-Problem-Solved\"\n        },\n        {\n            \"name\": \"Codeforces-Round-710\",\n            \"url\": \"https://github.com/dmin0211/Codeforces-Round-710\"\n        },\n        {\n            \"name\": \"Codeforces-Round-719\",\n            \"url\": \"https://github.com/dmin0211/Codeforces-Round-719\"\n        },\n        {\n            \"name\": \"dmin0211\",\n            \"url\": \"https://github.com/dmin0211/dmin0211\"\n        },\n        {\n            \"name\": \"KCPC-0\",\n            \"url\": \"https://github.com/dmin0211/KCPC-0\"\n        },\n        {\n            \"name\": \"KCPC-2\",\n            \"url\": \"https://github.com/dmin0211/KCPC-2\"\n        },\n        {\n            \"name\": \"Programmers-Problem-Solved\",\n            \"url\": \"https://github.com/dmin0211/Programmers-Problem-Solved\"\n        },\n        {\n            \"name\": \"SCPC-Problem-Solved\",\n            \"url\": \"https://github.com/dmin0211/SCPC-Problem-Solved\"\n        },\n        {\n            \"name\": \"Vanilla-JavaScript-Module\",\n            \"url\": \"https://github.com/dmin0211/Vanilla-JavaScript-Module\"\n        },\n        {\n            \"name\": \"Web-Boilerplate\",\n            \"url\": \"https://github.com/dmin0211/Web-Boilerplate\"\n        },\n        {\n            \"name\": \"Web-DB-Module\",\n            \"url\": \"https://github.com/dmin0211/Web-DB-Module\"\n        },\n        {\n            \"name\": \"web-firebase-project\",\n            \"url\": \"https://github.com/dmin0211/web-firebase-project\"\n        },\n        {\n            \"name\": \"Web-Shell-Script\",\n            \"url\": \"https://github.com/dmin0211/Web-Shell-Script\"\n        },\n        {\n            \"name\": \"Web-TS-Module\",\n            \"url\": \"https://github.com/dmin0211/Web-TS-Module\"\n        },\n        {\n            \"name\": \"WEB26-COKIRI\",\n            \"url\": \"https://github.com/dmin0211/WEB26-COKIRI\"\n        },\n        {\n            \"name\": \"webpack_playground\",\n            \"url\": \"https://github.com/dmin0211/webpack_playground\"\n        },\n        {\n            \"name\": \"Web_Buxi\",\n            \"url\": \"https://github.com/dmin0211/Web_Buxi\"\n        },\n        {\n            \"name\": \"Web_Kalgory\",\n            \"url\": \"https://github.com/dmin0211/Web_Kalgory\"\n        }\n    ]\n}"}],"_postman_id":"d6b44f62-ae16-4478-8a97-84ffbcf9c8d2"},{"name":"GitHub Repository 정보","id":"0c932325-6b09-4bed-984e-099b984da74c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[],"url":"http://localhost:3001/v1/users/:user_id/repositories/:repo_name","urlObject":{"path":["v1","users",":user_id","repositories",":repo_name"],"host":["http://localhost:3001"],"query":[],"variable":[{"type":"any","value":"6194d078928b431f065e0997","key":"user_id"},{"type":"any","value":"WEB26-COKIRI","key":"repo_name"}]}},"response":[{"id":"e541eca2-bde3-4dca-a8e9-fa9c8b9bed7f","name":"GitHub Repository 정보","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/users/:user_id/repositories/:repo_name","host":["http://localhost:3001"],"path":["v1","users",":user_id","repositories",":repo_name"],"variable":[{"key":"user_id","value":"6195daa5856537d371ba17f7"},{"key":"repo_name","value":"WEB26-COKIRI"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": {\n        \"title\": \"WEB26-COKIRI\",\n        \"external\": {\n            \"type\": \"repository\",\n            \"content\": \"<div align=\\\"center\\\">\\n    <a href=\\\"https://github.com/boostcampwm-2021/WEB26-COKIRI\\\">\\n    <img width=\\\"500\\\" src=\\\"https://user-images.githubusercontent.com/74395748/139043672-3e2cd88c-35e4-4d5f-8ca1-99766b1e4496.png\\\" />\\n    </a>\\n</div>\\n\\n\\n<p align=\\\"center\\\">\\n    <a href=\\\"/\\\"><img src=\\\"https://img.shields.io/badge/node-16.13.0-9181d6?logo=node.js\\\" alt=\\\"\\\"></a>\\n    <a href=\\\"/\\\"><img src=\\\"https://img.shields.io/badge/npm-8.1.0-9181D6?logo=npm\\\" alt=\\\"\\\"></a>\\n    <a href=\\\"/\\\"><img src=\\\"https://img.shields.io/badge/express-4.17.1-9181D6?logo=express\\\" alt=\\\"\\\"></a>\\n    <a href=\\\"/\\\"><img src=\\\"https://img.shields.io/badge/ubuntu-18.04-9181D6?logo=ubuntu\\\" alt=\\\"\\\"></a>\\n    <a href=\\\"/\\\"><img src=\\\"https://img.shields.io/badge/react-17.0.2-9181D6?logo=react\\\" alt=\\\"\\\"></a>\\n    <br>\\n    <a href=\\\"/\\\"><img src=\\\"https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2Fboostcampwm-2021%2FWEB26-COKIRI&count_bg=%239181D6&title_bg=%23555555&icon=&icon_color=%239181D6&title=&edge_flat=false\\\"/></a>\\n</p>\\n\\n<div align=\\\"center\\\">\\n<h2>\\n개발, 이제 관심을 받다.\\n</h2>\\n\\n<p>일상을 쉽게 공유하지 못하는 개발자를 위한 SNS.<br>\\n몇번의 클릭으로 다른 개발자의 흔적을 볼 수 있다.<br>\\n그리고<br>\\n코쿠(COCOO)는 개발자의 흩어진 노력을 모아준다.</p>\\n\\n</div>\\n\\n## 💧 링크\\n\\n- [배포](/)\\n- [데모 영상](/)\\n- [노션](https://pool-storm-1a3.notion.site/b1de384e2f8c47948ee4b347bda6de04)\\n- [디자인](https://miro.com/app/board/o9J_lnmq-7Y=/?invite_link_id=740345289660)\\n- [기획](https://miro.com/app/board/o9J_lnnTacc=/?invite_link_id=874331551230)\\n- [백로그](https://docs.google.com/spreadsheets/d/14WwTBta7pvPAq2TPi0Rga9ThRRph-Lt7dCHPDHVWlRo/edit?usp=sharing)\\n\\n\\n\\n## ❄️ 기능\\n\\n\\n## 아키텍쳐\\n![아키텍쳐 jpg](https://user-images.githubusercontent.com/34956768/139275197-360f1438-511c-428f-93b3-589ea978de29.jpg)\\n\\n## 스택\\n![스택1](https://user-images.githubusercontent.com/34956768/139271396-dd0cda8b-b31a-4690-a8dd-0565fe3ec2f6.jpg)\\n\\n\\n## 🧊 개발자\\n\\n|     정현민    |     유정한    |    김동민   |     한범석    |\\n| :---------: | :---------: | :--------: | :---------: |\\n|  **티라노**   |   **먼치킨**  |  **고라니** |  **타이거**   |\\n| @hyunmindev | @youjeonghan | @dmin0211 | @beomseok37 |\\n| <img width=200 src=\\\"https://user-images.githubusercontent.com/34956768/139091226-e7e7aa3b-785e-4fce-bec2-7b0178820aa5.png\\\"> | <img width=200 src=\\\"https://user-images.githubusercontent.com/34956768/139091573-17ca9a01-3a0a-448f-8203-faedc34aa2b6.png\\\"> | <img width=200 src=\\\"https://user-images.githubusercontent.com/34956768/139091567-646b32b0-a856-4e6f-9e18-3c62039f99fe.png\\\">| <img width=200 src=\\\"https://user-images.githubusercontent.com/34956768/139091533-cc71d3ea-4c68-4234-bba2-ec83ca74d94a.png\\\"> |\\n\",\n            \"link\": \"https://github.com/youjeonghan/WEB26-COKIRI\",\n            \"info\": {\n                \"starCount\": 0,\n                \"forkCount\": 0,\n                \"language\": {\n                    \"TypeScript\": 89.04,\n                    \"CSS\": 8.3,\n                    \"JavaScript\": 2.66\n                }\n            }\n        }\n    }\n}"}],"_postman_id":"0c932325-6b09-4bed-984e-099b984da74c"},{"name":"블로그 글 리스트","id":"1faeb5a8-a6ad-4445-a6d1-b47afb47a667","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[],"url":"http://localhost:3001/v1/users/:user_id/blogs","urlObject":{"path":["v1","users",":user_id","blogs"],"host":["http://localhost:3001"],"query":[],"variable":[{"description":{"content":"<p>유저 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"6194d078928b431f065e0997","key":"user_id"}]}},"response":[{"id":"9e4db8e2-9155-459b-af8a-41eba7408472","name":"블로그 글 리스트","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/users/:user_id/blogs","host":["http://localhost:3001"],"path":["v1","users",":user_id","blogs"],"variable":[{"key":"user_id","value":"6194d078928b431f065e0997","description":"유저 고유 식별자"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": [\n        {\n            \"postID\": \"14\",\n            \"postTitle\": \"양방향 통신(polling, long polling, websocket)\",\n            \"type\": \"tistory\",\n            \"identity\": \"dongmin-tech\"\n        },\n        {\n            \"postID\": \"13\",\n            \"postTitle\": \"[Node.js] SSH Tunneling 을 통한 ORM 생성하기\",\n            \"type\": \"tistory\",\n            \"identity\": \"dongmin-tech\"\n        },\n        {\n            \"postID\": \"12\",\n            \"postTitle\": \"[Javascript] this?\",\n            \"type\": \"tistory\",\n            \"identity\": \"dongmin-tech\"\n        },\n        {\n            \"postID\": \"11\",\n            \"postTitle\": \"[Javascript] Scope\",\n            \"type\": \"tistory\",\n            \"identity\": \"dongmin-tech\"\n        },\n        {\n            \"postID\": \"10\",\n            \"postTitle\": \"Atomic Design\",\n            \"type\": \"tistory\",\n            \"identity\": \"dongmin-tech\"\n        },\n        {\n            \"postID\": \"9\",\n            \"postTitle\": \"[React]Frontend 설계 5단계\",\n            \"type\": \"tistory\",\n            \"identity\": \"dongmin-tech\"\n        },\n        {\n            \"postID\": \"8\",\n            \"postTitle\": \"2021 부스트캠프(Web) Membership 1주차 정리\",\n            \"type\": \"tistory\",\n            \"identity\": \"dongmin-tech\"\n        },\n        {\n            \"postID\": \"7\",\n            \"postTitle\": \"2021 부스트캠프(Web) Membership 합격\",\n            \"type\": \"tistory\",\n            \"identity\": \"dongmin-tech\"\n        },\n        {\n            \"postID\": \"6\",\n            \"postTitle\": \"2021 부스트캠프(Web) Challenge 4주차 수료 후기\",\n            \"type\": \"tistory\",\n            \"identity\": \"dongmin-tech\"\n        },\n        {\n            \"postID\": \"5\",\n            \"postTitle\": \"2021 부스트캠프(Web) Challenge 3주차 후기\",\n            \"type\": \"tistory\",\n            \"identity\": \"dongmin-tech\"\n        },\n        {\n            \"postID\": \"3\",\n            \"postTitle\": \"2021 부스트캠프(Web) Challenge 2주차 후기\",\n            \"type\": \"tistory\",\n            \"identity\": \"dongmin-tech\"\n        },\n        {\n            \"postID\": \"2\",\n            \"postTitle\": \"2021 부스트캠프(Web) Challenge 1주차 후기\",\n            \"type\": \"tistory\",\n            \"identity\": \"dongmin-tech\"\n        },\n        {\n            \"postID\": \"1\",\n            \"postTitle\": \"환영합니다!\",\n            \"type\": \"tistory\",\n            \"identity\": \"dongmin-tech\"\n        }\n    ]\n}"}],"_postman_id":"1faeb5a8-a6ad-4445-a6d1-b47afb47a667"},{"name":"백준 문제 리스트 검색","id":"05617030-21a8-48a6-898a-c4abb3420ae1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/problems?query=터렛","urlObject":{"path":["v1","problems"],"host":["http://localhost:3001"],"query":[{"key":"query","value":"터렛"}],"variable":[]}},"response":[{"id":"c5835914-0237-4761-afe0-c65773341ac8","name":"백준 문제 리스트 검색","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/problems?query=터렛","host":["http://localhost:3001"],"path":["v1","problems"],"query":[{"key":"query","value":"터렛"}]}},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": [\n        {\n            \"id\": 1002,\n            \"title\": \"터렛\"\n        },\n        {\n            \"id\": 18825,\n            \"title\": \"눈치게임 A+B! A-B! A+B! 터렛! A+B! 피보나치 함수! A+B! A-B! A+B! 어린 왕자! A+B! ACM Craft! A+B! A-B! A+B! 습격자 초라기! A+B! 벡터 매칭! A+B! A-B! A+B! A/B! A+B! 터렛! A+B! A-B! A+B! 분산처리! A+B! A+B! 마셔라! 마셔라 마셔라! 마셔라 틀이 들어간다!\"\n        }\n    ]\n}"}],"_postman_id":"05617030-21a8-48a6-898a-c4abb3420ae1"},{"name":"Tistory 본문 가져오기","id":"72d77eaa-51d0-402a-b9b8-e485741366d4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[],"url":"http://localhost:3001/v1/users/:user_id/tistory/:identity/posts/:post_id","urlObject":{"path":["v1","users",":user_id","tistory",":identity","posts",":post_id"],"host":["http://localhost:3001"],"query":[],"variable":[{"type":"any","value":"6194d078928b431f065e0997","key":"user_id"},{"type":"any","value":"dongmin-tech","key":"identity"},{"type":"any","value":"14","key":"post_id"}]}},"response":[{"id":"0f8c8466-a4dc-4db8-b592-02efc7a33466","name":"Tistory 본문 가져오기","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/users/:user_id/tistory/:identity/posts/:post_id","host":["http://localhost:3001"],"path":["v1","users",":user_id","tistory",":identity","posts",":post_id"],"variable":[{"key":"user_id","value":"6194d078928b431f065e0997"},{"key":"identity","value":"dongmin-tech"},{"key":"post_id","value":"14"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": {\n        \"title\": \"양방향 통신(polling, long polling, websocket)\",\n        \"type\": \"tistory\",\n        \"content\": \"<h4 data-ke-size=\\\"size20\\\"><b>Polling</b></h4>\\n<p data-ke-size=\\\"size16\\\">Polling 방식은 간단하게 특정 시간마다 클라이언트에서 서버로 요청을 하며 응답을 통해 데이터를 갱신합니다. 즉, 아무런 server의 event 가 발생하지 않더라도 모든 클라이언트는 지속적으로 server에게 XMLHttpRequest를 보내게 됩니다. 또한 실시간으로 메시지 전달이 필요한 경우 요청을 보내는 주기가 짧아질 것입니다. 이는 서버의 불필요한 트래픽이 발생합니다.</p>\\n<p data-ke-size=\\\"size16\\\">매 주기마다 서버는 Request의 Header parser 하며, query를 통해 새로운 데이터에 대한 응답을 생성해서 보낼 것입니다. 그 후 서버는 모든 리소스에 대한 정리 작업도 진행해야 할 것입니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<h4 data-ke-size=\\\"size20\\\"><b>Long Polling</b></h4>\\n<p data-ke-size=\\\"size16\\\">기존 양방향 통신으로 사용되는 polling 방식보다 효율적인 방식의 기법입니다.</p>\\n<p data-ke-size=\\\"size16\\\">서버에 주기적으로 요청을 보내는 방식이 아닌 서버에서 클라이언트의 연결을 Keep Alive 헤더를 통해 유지하는 방식입니다.</p>\\n<p data-ke-size=\\\"size16\\\"><b>동작 방식</b></p>\\n<p><figure class='imageblock alignLeft' data-origin-width=\\\"1132\\\" data-origin-height=\\\"896\\\" data-filename=\\\"longpolling.png\\\" width=\\\"394\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"><span data-url='https://blog.kakaocdn.net/dn/wayei/btriDxzznNK/JtMHNogKkthQ3z7sCUFI80/img.png' data-lightbox='lightbox' data-alt=''><img src='https://blog.kakaocdn.net/dn/wayei/btriDxzznNK/JtMHNogKkthQ3z7sCUFI80/img.png' srcset='https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwayei%2FbtriDxzznNK%2FJtMHNogKkthQ3z7sCUFI80%2Fimg.png' data-origin-width=\\\"1132\\\" data-origin-height=\\\"896\\\" data-filename=\\\"longpolling.png\\\" width=\\\"394\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"></span></figure></p>\\n<ul style=\\\"list-style-type: disc;\\\" data-ke-list-type=\\\"disc\\\">\\n<li>우선 Client는 Server로 Keep Alive 헤더를 포함한 GET request를 보내며 응답을 받을 때까지 연결을 유지합니다.</li>\\n<li>Server의 Event 가 발생 시 Client의 GET request에 대해서 응답을 보내게 됩니다.</li>\\n<li>응답을 받은 Client는 다시 동일한 GET request를 보내며 다음 응답을 기다립니다.</li>\\n</ul>\\n<p data-ke-size=\\\"size16\\\">확실히 Server Event 발생 시에만 XMLHttpRequest 가 발생하며 불필요한 트래픽이 발생하지 않으며 실시간 메시지 전달이 가능합니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<p data-ke-size=\\\"size16\\\"><b>단점</b></p>\\n<p data-ke-size=\\\"size16\\\">하지만 주기적으로 데이터들을 한 번에 보내는 polling과 달리 Server Event 시마다 Server의 응답, Client의 GET 요청이 발생합니다. 당연히 서버는 동일하게 HTTP request의 header parser 작업과 응답 객체의 생성 작업을 거칩니다. 즉, 실시간으로 잦은 서버 상태 변경의 요청 즉 caching 되지 않는 request 통신이 이루어지는 경우 polling 보다 더 많은 트래픽이 발생할 수 있습니다.</p>\\n<p data-ke-size=\\\"size16\\\">추가적으로 relative message order의 문제점도 존재합니다.</p>\\n<p><figure class='imageblock alignLeft' data-origin-width=\\\"1024\\\" data-origin-height=\\\"784\\\" data-filename=\\\"cons1.png\\\" width=\\\"457\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"><span data-url='https://blog.kakaocdn.net/dn/dejRWc/btriDxNa1dm/nVRQa4jWRk2cAKRSs4sjZ0/img.png' data-lightbox='lightbox' data-alt=''><img src='https://blog.kakaocdn.net/dn/dejRWc/btriDxNa1dm/nVRQa4jWRk2cAKRSs4sjZ0/img.png' srcset='https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdejRWc%2FbtriDxNa1dm%2FnVRQa4jWRk2cAKRSs4sjZ0%2Fimg.png' data-origin-width=\\\"1024\\\" data-origin-height=\\\"784\\\" data-filename=\\\"cons1.png\\\" width=\\\"457\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"></span></figure></p>\\n<p data-ke-size=\\\"size16\\\">동일한 서버 리소스를 사용하는 클라이언트가 다중 탭으로 동일한 요청을 보내고 해당 요청에 대해서 서버가 Database 작업을 수행한다면 중복 데이터가 2번 저장 혹은 갱신되게 됩니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<p><figure class='imageblock alignLeft' data-origin-width=\\\"1046\\\" data-origin-height=\\\"810\\\" data-filename=\\\"cons2.png\\\" width=\\\"452\\\" height=\\\"350\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"><span data-url='https://blog.kakaocdn.net/dn/DV44W/btriHBVwqOO/wEVKOV8Z9ocXOEgwMWKhK0/img.png' data-lightbox='lightbox' data-alt=''><img src='https://blog.kakaocdn.net/dn/DV44W/btriHBVwqOO/wEVKOV8Z9ocXOEgwMWKhK0/img.png' srcset='https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDV44W%2FbtriHBVwqOO%2FwEVKOV8Z9ocXOEgwMWKhK0%2Fimg.png' data-origin-width=\\\"1046\\\" data-origin-height=\\\"810\\\" data-filename=\\\"cons2.png\\\" width=\\\"452\\\" height=\\\"350\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"></span></figure></p>\\n<p data-ke-size=\\\"size16\\\">또한 서버의 구현에 따라 클라이언트 인스턴스가 메시지 수신을 전혀 하지 못하는 경우가 있습니다. Server event 가 발생하여 응답을 보냈으나 네트워크, 브라우저의 문제 등의 경우로 누락된 경우 Client 가 정상적으로 응답받은 것을 확인하지 못하게 될 것입니다. Client 역시 응답이 중간에 누락된 것을 확인하지 못하고 더 이상 server 와의 통신이 이루어질 수 없을 것입니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<h4 data-ke-size=\\\"size20\\\"><b>Websocket</b></h4>\\n<p data-ke-size=\\\"size16\\\"><b>동작 방식</b></p>\\n<p data-ke-size=\\\"size16\\\">websocket 은 기존의 http protocol 요청을 사용한 양방향 통신(클라이언트가 요청이 없으면 서버에게 응답을 받을 수 없는 구조)을 문제를 해결하기 위해 나온 transport protocol입니다.</p>\\n<p data-ke-size=\\\"size16\\\">처음 서버와 클라이언트 간 http protocol 요청을 통해 handshake 과정을 거칩니다. 웹소켓 연결이 가능함을 handshake 과정에서 판단되면 서버와 클라이언트는 ws protocol로 데이터를 전송할 수 있습니다. 이때 데이터 전송에서 기존 http protocol 양방향 통신 방식의 문제 중 하나인 request header 정보로 인한 불필요한 overhead 가 적습니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<p data-ke-size=\\\"size16\\\"><b>단점</b></p>\\n<ul style=\\\"list-style-type: disc;\\\" data-ke-list-type=\\\"disc\\\">\\n<li>우선 2011 년 이전의 브라우저는 지원하지 않는 단점이 있습니다.</li>\\n<li>stateful protocol 이므로 연결의 종료에 대해서 서버에서 적절한 대처가 있어야 합니다.</li>\\n<li>소켓을 연결을 유지하는 것만으로 비용이 듭니다. 실시간으로 통신을 유지해야 하는 경우가 아니라면 http protocol 방식이 유용할 것입니다.</li>\\n</ul>\\n<h4 data-ke-size=\\\"size20\\\"><a href=\\\"http://Socket.io\\\">Socket.io</a></h4>\\n<p data-ke-size=\\\"size16\\\">websocket의 추가적인 단점은 개발의 피로도입니다. 이러한 피로도를 줄여주는 라이브러리가 <a href=\\\"http://socket.io\\\">Socket.io 입니다.</a> <a href=\\\"http://Socket.io\\\">Socket.io</a> <a href=\\\"%5B%3Chttps://socket.io/docs/v3/how-it-works/%3E%5D(%3Chttps://socket.io/docs/v3/how-it-works/%3E)\\\">How it works</a> 글을 읽어보면 기본 Client와 Server의 연결 방식의 설정은 long polling 방식입니다. 그러한 이유는 Websocket 방식은 브라우저 버전, 프락시, 개인 방화벽, 바이러스 백신 소프트웨어로 인해 항상 연결이 가능한 것은 아닙니다. 그 후 Websocket upgrade 가 가능하다면 Websocket 방식을 사용합니다.</p>\\n<p data-ke-size=\\\"size16\\\">이 글의 내용을 확인해 봤을 때 <a href=\\\"http://Socket.io\\\">Socket.io</a> 라이브러리는 Websocket 방식의 fallback으로 long polling 방식을 사용하고 있습니다. 하지만 long polling 방식은 위에서 확인한 것과 같이 단점이 존재하며 그것은 Websocket 방식 역시 마찬가지입니다.</p>\\n<p data-ke-size=\\\"size16\\\">마지막으로 필자의 생각입니다. 아직 각 양방향 통신의 단점을 완전히 해결할 수 있는 방식이 나오지 않았고 가능한지도 짐작할 수 없습니다. 현재로서는 구현하고 있는 서비스에 대한 알맞은 통신 방식을 선정하여 <a href=\\\"http://Socket.io\\\">Socket.io</a> fallback 설정을 하는 것을 생각해봐야 할 것 같습니다.</p>\",\n        \"link\": \"https://blog.dongmin.dev/14\",\n        \"identity\": \"dongmin-tech\",\n        \"target\": \"14\"\n    }\n}"}],"_postman_id":"72d77eaa-51d0-402a-b9b8-e485741366d4"},{"name":"블로그 글 갱신","id":"1dedaad4-49ba-4865-bca4-f40017c8663b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"type\": \"tistory\",\n    \"userID\": \"6194d078928b431f065e0997\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/posts/:postId/blog","urlObject":{"path":["v1","posts",":postId","blog"],"host":["http://localhost:3001"],"query":[],"variable":[{"type":"any","value":"6197c543705169a1ca1aa9ef","key":"postId"}]}},"response":[{"id":"10e326ea-1e6f-4777-bced-4655ab6f900c","name":"블로그 글 갱신","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"type\": \"tistory\",\n    \"userID\": \"6194d078928b431f065e0997\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:3001/v1/posts/:postId/blog","host":["http://localhost:3001"],"path":["v1","posts",":postId","blog"],"variable":[{"key":"postId","value":"6197c543705169a1ca1aa9ef"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": {\n        \"_id\": \"6197c543705169a1ca1aa9ef\",\n        \"title\": \"양방향 통신(polling, long polling, websocket)\",\n        \"content\": \"Tistory 글을 연동해보았어요!!\",\n        \"tags\": [],\n        \"type\": \"blog\",\n        \"external\": {\n            \"type\": \"tistory\",\n            \"content\": \"<h4 data-ke-size=\\\"size20\\\"><b>Polling</b></h4>\\n<p data-ke-size=\\\"size16\\\">Polling 방식은 간단하게 특정 시간마다 클라이언트에서 서버로 요청을 하며 응답을 통해 데이터를 갱신합니다. 즉, 아무런 server의 event 가 발생하지 않더라도 모든 클라이언트는 지속적으로 server에게 XMLHttpRequest를 보내게 됩니다. 또한 실시간으로 메시지 전달이 필요한 경우 요청을 보내는 주기가 짧아질 것입니다. 이는 서버의 불필요한 트래픽이 발생합니다.</p>\\n<p data-ke-size=\\\"size16\\\">매 주기마다 서버는 Request의 Header parser 하며, query를 통해 새로운 데이터에 대한 응답을 생성해서 보낼 것입니다. 그 후 서버는 모든 리소스에 대한 정리 작업도 진행해야 할 것입니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<h4 data-ke-size=\\\"size20\\\"><b>Long Polling</b></h4>\\n<p data-ke-size=\\\"size16\\\">기존 양방향 통신으로 사용되는 polling 방식보다 효율적인 방식의 기법입니다.</p>\\n<p data-ke-size=\\\"size16\\\">서버에 주기적으로 요청을 보내는 방식이 아닌 서버에서 클라이언트의 연결을 Keep Alive 헤더를 통해 유지하는 방식입니다.</p>\\n<p data-ke-size=\\\"size16\\\"><b>동작 방식</b></p>\\n<p><figure class='imageblock alignLeft' data-origin-width=\\\"1132\\\" data-origin-height=\\\"896\\\" data-filename=\\\"longpolling.png\\\" width=\\\"394\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"><span data-url='https://blog.kakaocdn.net/dn/wayei/btriDxzznNK/JtMHNogKkthQ3z7sCUFI80/img.png' data-lightbox='lightbox' data-alt=''><img src='https://blog.kakaocdn.net/dn/wayei/btriDxzznNK/JtMHNogKkthQ3z7sCUFI80/img.png' srcset='https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwayei%2FbtriDxzznNK%2FJtMHNogKkthQ3z7sCUFI80%2Fimg.png' data-origin-width=\\\"1132\\\" data-origin-height=\\\"896\\\" data-filename=\\\"longpolling.png\\\" width=\\\"394\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"></span></figure></p>\\n<ul style=\\\"list-style-type: disc;\\\" data-ke-list-type=\\\"disc\\\">\\n<li>우선 Client는 Server로 Keep Alive 헤더를 포함한 GET request를 보내며 응답을 받을 때까지 연결을 유지합니다.</li>\\n<li>Server의 Event 가 발생 시 Client의 GET request에 대해서 응답을 보내게 됩니다.</li>\\n<li>응답을 받은 Client는 다시 동일한 GET request를 보내며 다음 응답을 기다립니다.</li>\\n</ul>\\n<p data-ke-size=\\\"size16\\\">확실히 Server Event 발생 시에만 XMLHttpRequest 가 발생하며 불필요한 트래픽이 발생하지 않으며 실시간 메시지 전달이 가능합니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<p data-ke-size=\\\"size16\\\"><b>단점</b></p>\\n<p data-ke-size=\\\"size16\\\">하지만 주기적으로 데이터들을 한 번에 보내는 polling과 달리 Server Event 시마다 Server의 응답, Client의 GET 요청이 발생합니다. 당연히 서버는 동일하게 HTTP request의 header parser 작업과 응답 객체의 생성 작업을 거칩니다. 즉, 실시간으로 잦은 서버 상태 변경의 요청 즉 caching 되지 않는 request 통신이 이루어지는 경우 polling 보다 더 많은 트래픽이 발생할 수 있습니다.</p>\\n<p data-ke-size=\\\"size16\\\">추가적으로 relative message order의 문제점도 존재합니다.</p>\\n<p><figure class='imageblock alignLeft' data-origin-width=\\\"1024\\\" data-origin-height=\\\"784\\\" data-filename=\\\"cons1.png\\\" width=\\\"457\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"><span data-url='https://blog.kakaocdn.net/dn/dejRWc/btriDxNa1dm/nVRQa4jWRk2cAKRSs4sjZ0/img.png' data-lightbox='lightbox' data-alt=''><img src='https://blog.kakaocdn.net/dn/dejRWc/btriDxNa1dm/nVRQa4jWRk2cAKRSs4sjZ0/img.png' srcset='https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdejRWc%2FbtriDxNa1dm%2FnVRQa4jWRk2cAKRSs4sjZ0%2Fimg.png' data-origin-width=\\\"1024\\\" data-origin-height=\\\"784\\\" data-filename=\\\"cons1.png\\\" width=\\\"457\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"></span></figure></p>\\n<p data-ke-size=\\\"size16\\\">동일한 서버 리소스를 사용하는 클라이언트가 다중 탭으로 동일한 요청을 보내고 해당 요청에 대해서 서버가 Database 작업을 수행한다면 중복 데이터가 2번 저장 혹은 갱신되게 됩니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<p><figure class='imageblock alignLeft' data-origin-width=\\\"1046\\\" data-origin-height=\\\"810\\\" data-filename=\\\"cons2.png\\\" width=\\\"452\\\" height=\\\"350\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"><span data-url='https://blog.kakaocdn.net/dn/DV44W/btriHBVwqOO/wEVKOV8Z9ocXOEgwMWKhK0/img.png' data-lightbox='lightbox' data-alt=''><img src='https://blog.kakaocdn.net/dn/DV44W/btriHBVwqOO/wEVKOV8Z9ocXOEgwMWKhK0/img.png' srcset='https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDV44W%2FbtriHBVwqOO%2FwEVKOV8Z9ocXOEgwMWKhK0%2Fimg.png' data-origin-width=\\\"1046\\\" data-origin-height=\\\"810\\\" data-filename=\\\"cons2.png\\\" width=\\\"452\\\" height=\\\"350\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"></span></figure></p>\\n<p data-ke-size=\\\"size16\\\">또한 서버의 구현에 따라 클라이언트 인스턴스가 메시지 수신을 전혀 하지 못하는 경우가 있습니다. Server event 가 발생하여 응답을 보냈으나 네트워크, 브라우저의 문제 등의 경우로 누락된 경우 Client 가 정상적으로 응답받은 것을 확인하지 못하게 될 것입니다. Client 역시 응답이 중간에 누락된 것을 확인하지 못하고 더 이상 server 와의 통신이 이루어질 수 없을 것입니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<h4 data-ke-size=\\\"size20\\\"><b>Websocket</b></h4>\\n<p data-ke-size=\\\"size16\\\"><b>동작 방식</b></p>\\n<p data-ke-size=\\\"size16\\\">websocket 은 기존의 http protocol 요청을 사용한 양방향 통신(클라이언트가 요청이 없으면 서버에게 응답을 받을 수 없는 구조)을 문제를 해결하기 위해 나온 transport protocol입니다.</p>\\n<p data-ke-size=\\\"size16\\\">처음 서버와 클라이언트 간 http protocol 요청을 통해 handshake 과정을 거칩니다. 웹소켓 연결이 가능함을 handshake 과정에서 판단되면 서버와 클라이언트는 ws protocol로 데이터를 전송할 수 있습니다. 이때 데이터 전송에서 기존 http protocol 양방향 통신 방식의 문제 중 하나인 request header 정보로 인한 불필요한 overhead 가 적습니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<p data-ke-size=\\\"size16\\\"><b>단점</b></p>\\n<ul style=\\\"list-style-type: disc;\\\" data-ke-list-type=\\\"disc\\\">\\n<li>우선 2011 년 이전의 브라우저는 지원하지 않는 단점이 있습니다.</li>\\n<li>stateful protocol 이므로 연결의 종료에 대해서 서버에서 적절한 대처가 있어야 합니다.</li>\\n<li>소켓을 연결을 유지하는 것만으로 비용이 듭니다. 실시간으로 통신을 유지해야 하는 경우가 아니라면 http protocol 방식이 유용할 것입니다.</li>\\n</ul>\\n<h4 data-ke-size=\\\"size20\\\"><a href=\\\"http://Socket.io\\\">Socket.io</a></h4>\\n<p data-ke-size=\\\"size16\\\">websocket의 추가적인 단점은 개발의 피로도입니다. 이러한 피로도를 줄여주는 라이브러리가 <a href=\\\"http://socket.io\\\">Socket.io 입니다.</a> <a href=\\\"http://Socket.io\\\">Socket.io</a> <a href=\\\"%5B%3Chttps://socket.io/docs/v3/how-it-works/%3E%5D(%3Chttps://socket.io/docs/v3/how-it-works/%3E)\\\">How it works</a> 글을 읽어보면 기본 Client와 Server의 연결 방식의 설정은 long polling 방식입니다. 그러한 이유는 Websocket 방식은 브라우저 버전, 프락시, 개인 방화벽, 바이러스 백신 소프트웨어로 인해 항상 연결이 가능한 것은 아닙니다. 그 후 Websocket upgrade 가 가능하다면 Websocket 방식을 사용합니다.</p>\\n<p data-ke-size=\\\"size16\\\">이 글의 내용을 확인해 봤을 때 <a href=\\\"http://Socket.io\\\">Socket.io</a> 라이브러리는 Websocket 방식의 fallback으로 long polling 방식을 사용하고 있습니다. 하지만 long polling 방식은 위에서 확인한 것과 같이 단점이 존재하며 그것은 Websocket 방식 역시 마찬가지입니다.</p>\\n<p data-ke-size=\\\"size16\\\">마지막으로 필자의 생각입니다. 아직 각 양방향 통신의 단점을 완전히 해결할 수 있는 방식이 나오지 않았고 가능한지도 짐작할 수 없습니다. 현재로서는 구현하고 있는 서비스에 대한 알맞은 통신 방식을 선정하여 <a href=\\\"http://Socket.io\\\">Socket.io</a> fallback 설정을 하는 것을 생각해봐야 할 것 같습니다.</p>\",\n            \"link\": \"https://blog.dongmin.dev/14\",\n            \"identity\": \"dongmin-tech\",\n            \"target\": \"14\"\n        },\n        \"createdAt\": \"2021-11-19T15:39:47.448Z\",\n        \"updatedAt\": \"2021-11-22T07:29:41.413Z\",\n        \"user\": {\n            \"_id\": \"6194d078928b431f065e0997\",\n            \"username\": \"kdmin0211\",\n            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/YucySHrnR01g76PMCtSJ6.jpeg\"\n        },\n        \"comments\": [\n            {\n                \"_id\": \"6197cadb7e024b439b2a287a\",\n                \"content\": \"멋지네요👍\",\n                \"createdAt\": \"2021-11-19T16:03:39.643Z\",\n                \"updatedAt\": \"2021-11-19T16:03:39.643Z\",\n                \"user\": {\n                    \"_id\": \"6194d259dd93761039d5666f\",\n                    \"username\": \"beomseok37\",\n                    \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/Sk5wcHvx9-ywPmwMhScv-.jpg\"\n                },\n                \"likes\": [\n                    {\n                        \"_id\": \"619a150a252efc260508d183\",\n                        \"createdAt\": \"2021-11-21T09:44:40.033Z\",\n                        \"user\": {\n                            \"_id\": \"6194d21006d472d1f4839373\",\n                            \"username\": \"hyunmindev\",\n                            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/gmt5gw6eum6OUW035SZ7V.jpeg\"\n                        }\n                    }\n                ]\n            }\n        ],\n        \"likes\": [\n            {\n                \"_id\": \"6197cadd252efc260506a481\",\n                \"createdAt\": \"2021-11-19T16:03:42.116Z\",\n                \"user\": {\n                    \"_id\": \"6194d259dd93761039d5666f\",\n                    \"username\": \"beomseok37\",\n                    \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/Sk5wcHvx9-ywPmwMhScv-.jpg\"\n                }\n            }\n        ],\n        \"images\": []\n    }\n}"}],"_postman_id":"1dedaad4-49ba-4865-bca4-f40017c8663b"},{"name":"백준 문제 세부내용 가져오기","id":"861d6982-d38e-429e-8f9a-57d6c0dca7bd","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/problems/:problem_id","urlObject":{"path":["v1","problems",":problem_id"],"host":["http://localhost:3001"],"query":[],"variable":[{"type":"any","value":"1","key":"problem_id"}]}},"response":[{"id":"d8912de2-413c-41b9-b7ae-b21b05796657","name":"백준 문제 세부내용 가져오기","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/problems/:problem_id","host":["http://localhost:3001"],"path":["v1","problems",":problem_id"],"variable":[{"key":"problem_id","value":"1011"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": {\n        \"title\": \"다리 놓기\",\n        \"type\": \"problem\",\n        \"identity\": \"baekjoon\",\n        \"target\": \"1010\",\n        \"content\": \"<p>재원이는 한 도시의 시장이 되었다. 이 도시에는&nbsp;도시를 동쪽과 서쪽으로 나누는 큰 일직선 모양의 강이 흐르고 있다.&nbsp;하지만 재원이는 다리가 없어서 시민들이 강을 건너는데 큰 불편을 겪고 있음을 알고 다리를 짓기로 결심하였다. 강 주변에서 다리를 짓기에 적합한 곳을 사이트라고 한다. 재원이는 강 주변을 면밀히 조사해 본 결과 강의 서쪽에는 N개의 사이트가 있고 동쪽에는 M개의 사이트가 있다는 것을 알았다. (N ≤ M)</p>\\n\\n<p>재원이는 서쪽의 사이트와 동쪽의 사이트를 다리로 연결하려고 한다. (이때 한 사이트에는 최대 한 개의 다리만 연결될 수 있다.) 재원이는 다리를 최대한 많이 지으려고 하기 때문에 서쪽의 사이트 개수만큼 (N개) 다리를 지으려고 한다. 다리끼리는 서로 겹쳐질 수 없다고 할 때 다리를 지을 수 있는 경우의 수를 구하는 프로그램을 작성하라.</p>\\n\\n<p><img alt=\\\"\\\" src=\\\"https://www.acmicpc.net/upload/201003/pic1.JPG\\\" style=\\\"height:353px; width:329px\\\"></p>\",\n        \"link\": \"https://www.acmicpc.net/problem/1010\",\n        \"info\": {\n            \"solvedUserCount\": 15771,\n            \"totalTryCount\": 32816,\n            \"tear\": \"Silver5\"\n        }\n    }\n}"}],"_postman_id":"861d6982-d38e-429e-8f9a-57d6c0dca7bd"}],"id":"299492cc-095d-4099-a920-e098da265315","_postman_id":"299492cc-095d-4099-a920-e098da265315","description":""},{"name":"헤더","item":[{"name":"검색","id":"fd411186-f3ec-4475-8092-75079a804aac","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/search?query=beo","description":"<p>현재는 사용자 username만 검색</p>\n","urlObject":{"path":["v1","search"],"host":["http://localhost:3001"],"query":[{"description":{"content":"<p>검색 쿼리</p>\n","type":"text/plain"},"key":"query","value":"beo"}],"variable":[]}},"response":[{"id":"198b87ba-814e-40bf-b611-dbdadbec6a3e","name":"검색","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/search?query=beo","host":["http://localhost:3001"],"path":["v1","search"],"query":[{"key":"query","value":"beo","description":"검색 쿼리"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": [\n        {\n            \"_id\": \"6194d259dd93761039d5666f\",\n            \"name\": \"\",\n            \"username\": \"beomseok\",\n            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/uxuJfcW8cDX--X3fAeXp8.jpg\"\n        }\n    ]\n}"}],"_postman_id":"fd411186-f3ec-4475-8092-75079a804aac"},{"name":"알림 리스트 가져오기","id":"2af28f9e-07d5-4cae-9a72-699893794a7a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[],"url":"http://localhost:3001/v1/users/:user_id/notifies","urlObject":{"path":["v1","users",":user_id","notifies"],"host":["http://localhost:3001"],"query":[],"variable":[{"description":{"content":"<p>유저 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"6195daa5856537d371ba17f7","key":"user_id"}]}},"response":[{"id":"702d0110-ed27-4910-a92c-dc90b5112bd7","name":"알림 리스트 가져오기","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/users/:user_id/notifies","host":["http://localhost:3001"],"path":["v1","users",":user_id","notifies"],"variable":[{"key":"user_id","value":"6195daa5856537d371ba17f7","description":"유저 고유 식별자"}]}},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\r\n    \"code\": \"Success\",\r\n    \"data\": []\r\n}"}],"_postman_id":"2af28f9e-07d5-4cae-9a72-699893794a7a"}],"id":"4937240d-48bc-4297-9914-dd52d3efcf50","_postman_id":"4937240d-48bc-4297-9914-dd52d3efcf50","description":""},{"name":"인증","item":[{"name":"사용자 입력 데이터 저장","id":"42229a51-d925-46e7-b7e2-ff9e0e517640","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"\",\n    \"username\": \"TESTUSERNAME\",\n    \"school\": \"\",\n    \"company\": \"\",\n    \"sex\": \"male\",\n    \"birthday\": \"2020-10-10\",\n    \"region\": \"\",\n    \"bio\": \"나는 유정란입니다.\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/users/:user_id/settings","description":"<h2 id=\"사용자의-회원가입-api\">사용자의 회원가입 API</h2>\n<h4 id=\"request\">request</h4>\n<ul>\n<li>name: String</li>\n<li>username: String</li>\n<li>school: String,</li>\n<li>company: String,</li>\n<li>authProvider: String(github | google | kakao)</li>\n<li>sex: String(men | women)</li>\n<li>birthday: Date</li>\n<li>region: String</li>\n<li>language: String(language id)[]</li>\n</ul>\n<h4 id=\"response\">response</h4>\n","urlObject":{"path":["v1","users",":user_id","settings"],"host":["http://localhost:3001"],"query":[],"variable":[{"description":{"content":"<p>유저 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"619524778f74ea2d7d4bcebe","key":"user_id"}]}},"response":[{"id":"54401c56-b342-4671-9505-6697f6e9a4f2","name":"사용자 입력 데이터 저장","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"\",\n    \"username\": \"TESTUSERNAME\",\n    \"school\": \"\",\n    \"company\": \"\",\n    \"sex\": \"male\",\n    \"birthday\": \"2020-10-10\",\n    \"region\": \"\",\n    \"bio\": \"나는 김동민입니다.\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:3001/v1/users/:user_id/settings","host":["http://localhost:3001"],"path":["v1","users",":user_id","settings"],"variable":[{"key":"user_id","value":null}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\"\n}"}],"_postman_id":"42229a51-d925-46e7-b7e2-ff9e0e517640"},{"name":"유저네임 유효성 검사","id":"8eb9ab80-5cfc-4cc7-b583-73aefd160aa6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/users?query=TESTUSERNAME","description":"<h2 id=\"사용자가-입력한-username-에-대하여-중복검사\">사용자가 입력한 username 에 대하여 중복검사</h2>\n<h4 id=\"request\">request</h4>\n<h4 id=\"response\">response</h4>\n<ul>\n<li>isUsernameValid: boolean</li>\n</ul>\n","urlObject":{"path":["v1","users"],"host":["http://localhost:3001"],"query":[{"key":"query","value":"TESTUSERNAME"}],"variable":[]}},"response":[{"id":"0b269dd8-5518-4e03-bdf5-6e340a12e5be","name":"유저네임 유효성 검사","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/users?query=username","host":["http://localhost:3001"],"path":["v1","users"],"query":[{"key":"query","value":"username"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": false\n}"}],"_postman_id":"8eb9ab80-5cfc-4cc7-b583-73aefd160aa6"},{"name":"깃허브 인증 & 깃허브 username 가져오기","id":"8a1d00f7-b4db-4233-950e-f0ffc0e59328","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/socials/github","description":"<p><a href=\"http://localhost:3001/v1/socials/github?user_id=6195daa5856537d371ba17f7\">http://localhost:3001/v1/socials/github?user_id=6195daa5856537d371ba17f7</a>\n이렇게 user_id 에 user_id를 넣으면 깃허브 정보만 가져오는 API로 ㅕㄴ함</p>\n","urlObject":{"path":["v1","socials","github"],"host":["http://localhost:3001"],"query":[],"variable":[]}},"response":[],"_postman_id":"8a1d00f7-b4db-4233-950e-f0ffc0e59328"},{"name":"깃허브 잔디 정보 가져오기","id":"b0605c68-580b-4a76-b771-63db81be42ae","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/users/:user_id/repositories/contribution","urlObject":{"path":["v1","users",":user_id","repositories","contribution"],"host":["http://localhost:3001"],"query":[],"variable":[{"type":"any","value":"6192173ad94aede2c74a67cb","key":"user_id"}]}},"response":[{"id":"886a3194-525c-4f56-899c-cabf951efb6a","name":"깃허브 잔디 정보 가져오기","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/users/:user_id/repositories/contribution","host":["http://localhost:3001"],"path":["v1","users",":user_id","repositories","contribution"],"variable":[{"key":"user_id","value":"6192173ad94aede2c74a67cb"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"result\": {\n        \"2020-11-15\": 2,\n        \"2020-11-16\": 2,\n        \"2020-11-17\": 0,\n        \"2020-11-18\": 2,\n        \"2020-11-19\": 4,\n        \"2020-11-20\": 0,\n        \"2020-11-21\": 0,\n        \"2020-11-22\": 1,\n        \"2020-11-23\": 0,\n        \"2020-11-24\": 0,\n        \"2020-11-25\": 1,\n        \"2020-11-26\": 0,\n        \"2020-11-27\": 0,\n        \"2020-11-28\": 0,\n        \"2020-11-29\": 4,\n        \"2020-11-30\": 1,\n        \"2020-12-01\": 4,\n        \"2020-12-02\": 0,\n        \"2020-12-03\": 1,\n        \"2020-12-04\": 2,\n        \"2020-12-05\": 1,\n        \"2020-12-06\": 0,\n        \"2020-12-07\": 0,\n        \"2020-12-08\": 0,\n        \"2020-12-09\": 0,\n        \"2020-12-10\": 0,\n        \"2020-12-11\": 0,\n        \"2020-12-12\": 1,\n        \"2020-12-13\": 0,\n        \"2020-12-14\": 1,\n        \"2020-12-15\": 1,\n        \"2020-12-16\": 0,\n        \"2020-12-17\": 1,\n        \"2020-12-18\": 7,\n        \"2020-12-19\": 7,\n        \"2020-12-20\": 12,\n        \"2020-12-21\": 8,\n        \"2020-12-22\": 4,\n        \"2020-12-23\": 1,\n        \"2020-12-24\": 2,\n        \"2020-12-25\": 2,\n        \"2020-12-26\": 2,\n        \"2020-12-27\": 3,\n        \"2020-12-28\": 8,\n        \"2020-12-29\": 30,\n        \"2020-12-30\": 14,\n        \"2020-12-31\": 12,\n        \"2021-01-01\": 11,\n        \"2021-01-02\": 5,\n        \"2021-01-03\": 12,\n        \"2021-01-04\": 1,\n        \"2021-01-05\": 9,\n        \"2021-01-06\": 6,\n        \"2021-01-07\": 2,\n        \"2021-01-08\": 3,\n        \"2021-01-09\": 1,\n        \"2021-01-10\": 3,\n        \"2021-01-11\": 16,\n        \"2021-01-12\": 6,\n        \"2021-01-13\": 5,\n        \"2021-01-14\": 4,\n        \"2021-01-15\": 6,\n        \"2021-01-16\": 0,\n        \"2021-01-17\": 2,\n        \"2021-01-18\": 4,\n        \"2021-01-19\": 7,\n        \"2021-01-20\": 4,\n        \"2021-01-21\": 3,\n        \"2021-01-22\": 5,\n        \"2021-01-23\": 0,\n        \"2021-01-24\": 1,\n        \"2021-01-25\": 2,\n        \"2021-01-26\": 4,\n        \"2021-01-27\": 4,\n        \"2021-01-28\": 0,\n        \"2021-01-29\": 1,\n        \"2021-01-30\": 4,\n        \"2021-01-31\": 0,\n        \"2021-02-01\": 0,\n        \"2021-02-02\": 2,\n        \"2021-02-03\": 4,\n        \"2021-02-04\": 6,\n        \"2021-02-05\": 5,\n        \"2021-02-06\": 1,\n        \"2021-02-07\": 0,\n        \"2021-02-08\": 0,\n        \"2021-02-09\": 1,\n        \"2021-02-10\": 1,\n        \"2021-02-11\": 3,\n        \"2021-02-12\": 5,\n        \"2021-02-13\": 4,\n        \"2021-02-14\": 1,\n        \"2021-02-15\": 0,\n        \"2021-02-16\": 1,\n        \"2021-02-17\": 1,\n        \"2021-02-18\": 0,\n        \"2021-02-19\": 3,\n        \"2021-02-20\": 1,\n        \"2021-02-21\": 2,\n        \"2021-02-22\": 5,\n        \"2021-02-23\": 0,\n        \"2021-02-24\": 6,\n        \"2021-02-25\": 2,\n        \"2021-02-26\": 1,\n        \"2021-02-27\": 7,\n        \"2021-02-28\": 1,\n        \"2021-03-01\": 6,\n        \"2021-03-02\": 3,\n        \"2021-03-03\": 11,\n        \"2021-03-04\": 1,\n        \"2021-03-05\": 3,\n        \"2021-03-06\": 1,\n        \"2021-03-07\": 2,\n        \"2021-03-08\": 2,\n        \"2021-03-09\": 0,\n        \"2021-03-10\": 5,\n        \"2021-03-11\": 2,\n        \"2021-03-12\": 3,\n        \"2021-03-13\": 7,\n        \"2021-03-14\": 0,\n        \"2021-03-15\": 0,\n        \"2021-03-16\": 0,\n        \"2021-03-17\": 4,\n        \"2021-03-18\": 4,\n        \"2021-03-19\": 1,\n        \"2021-03-20\": 4,\n        \"2021-03-21\": 0,\n        \"2021-03-22\": 4,\n        \"2021-03-23\": 2,\n        \"2021-03-24\": 0,\n        \"2021-03-25\": 5,\n        \"2021-03-26\": 3,\n        \"2021-03-27\": 1,\n        \"2021-03-28\": 0,\n        \"2021-03-29\": 1,\n        \"2021-03-30\": 2,\n        \"2021-03-31\": 2,\n        \"2021-04-01\": 4,\n        \"2021-04-02\": 2,\n        \"2021-04-03\": 7,\n        \"2021-04-04\": 0,\n        \"2021-04-05\": 1,\n        \"2021-04-06\": 2,\n        \"2021-04-07\": 3,\n        \"2021-04-08\": 1,\n        \"2021-04-09\": 7,\n        \"2021-04-10\": 4,\n        \"2021-04-11\": 3,\n        \"2021-04-12\": 17,\n        \"2021-04-13\": 11,\n        \"2021-04-14\": 9,\n        \"2021-04-15\": 3,\n        \"2021-04-16\": 2,\n        \"2021-04-17\": 0,\n        \"2021-04-18\": 1,\n        \"2021-04-19\": 0,\n        \"2021-04-20\": 3,\n        \"2021-04-21\": 5,\n        \"2021-04-22\": 1,\n        \"2021-04-23\": 1,\n        \"2021-04-24\": 3,\n        \"2021-04-25\": 1,\n        \"2021-04-26\": 6,\n        \"2021-04-27\": 0,\n        \"2021-04-28\": 5,\n        \"2021-04-29\": 5,\n        \"2021-04-30\": 1,\n        \"2021-05-01\": 4,\n        \"2021-05-02\": 1,\n        \"2021-05-03\": 0,\n        \"2021-05-04\": 0,\n        \"2021-05-05\": 0,\n        \"2021-05-06\": 0,\n        \"2021-05-07\": 2,\n        \"2021-05-08\": 2,\n        \"2021-05-09\": 0,\n        \"2021-05-10\": 0,\n        \"2021-05-11\": 0,\n        \"2021-05-12\": 8,\n        \"2021-05-13\": 6,\n        \"2021-05-14\": 0,\n        \"2021-05-15\": 3,\n        \"2021-05-16\": 2,\n        \"2021-05-17\": 0,\n        \"2021-05-18\": 2,\n        \"2021-05-19\": 0,\n        \"2021-05-20\": 5,\n        \"2021-05-21\": 1,\n        \"2021-05-22\": 0,\n        \"2021-05-23\": 0,\n        \"2021-05-24\": 3,\n        \"2021-05-25\": 0,\n        \"2021-05-26\": 3,\n        \"2021-05-27\": 1,\n        \"2021-05-28\": 1,\n        \"2021-05-29\": 1,\n        \"2021-05-30\": 2,\n        \"2021-05-31\": 0,\n        \"2021-06-01\": 3,\n        \"2021-06-02\": 3,\n        \"2021-06-03\": 1,\n        \"2021-06-04\": 3,\n        \"2021-06-05\": 1,\n        \"2021-06-06\": 2,\n        \"2021-06-07\": 4,\n        \"2021-06-08\": 1,\n        \"2021-06-09\": 0,\n        \"2021-06-10\": 1,\n        \"2021-06-11\": 0,\n        \"2021-06-12\": 2,\n        \"2021-06-13\": 0,\n        \"2021-06-14\": 1,\n        \"2021-06-15\": 1,\n        \"2021-06-16\": 0,\n        \"2021-06-17\": 2,\n        \"2021-06-18\": 8,\n        \"2021-06-19\": 2,\n        \"2021-06-20\": 1,\n        \"2021-06-21\": 5,\n        \"2021-06-22\": 3,\n        \"2021-06-23\": 0,\n        \"2021-06-24\": 2,\n        \"2021-06-25\": 0,\n        \"2021-06-26\": 1,\n        \"2021-06-27\": 2,\n        \"2021-06-28\": 3,\n        \"2021-06-29\": 2,\n        \"2021-06-30\": 0,\n        \"2021-07-01\": 3,\n        \"2021-07-02\": 1,\n        \"2021-07-03\": 2,\n        \"2021-07-04\": 3,\n        \"2021-07-05\": 9,\n        \"2021-07-06\": 9,\n        \"2021-07-07\": 3,\n        \"2021-07-08\": 8,\n        \"2021-07-09\": 2,\n        \"2021-07-10\": 7,\n        \"2021-07-11\": 2,\n        \"2021-07-12\": 2,\n        \"2021-07-13\": 6,\n        \"2021-07-14\": 11,\n        \"2021-07-15\": 13,\n        \"2021-07-16\": 9,\n        \"2021-07-17\": 5,\n        \"2021-07-18\": 4,\n        \"2021-07-19\": 8,\n        \"2021-07-20\": 0,\n        \"2021-07-21\": 0,\n        \"2021-07-22\": 7,\n        \"2021-07-23\": 1,\n        \"2021-07-24\": 5,\n        \"2021-07-25\": 5,\n        \"2021-07-26\": 2,\n        \"2021-07-27\": 3,\n        \"2021-07-28\": 2,\n        \"2021-07-29\": 0,\n        \"2021-07-30\": 5,\n        \"2021-07-31\": 10,\n        \"2021-08-01\": 0,\n        \"2021-08-02\": 5,\n        \"2021-08-03\": 4,\n        \"2021-08-04\": 0,\n        \"2021-08-05\": 2,\n        \"2021-08-06\": 1,\n        \"2021-08-07\": 0,\n        \"2021-08-08\": 2,\n        \"2021-08-09\": 2,\n        \"2021-08-10\": 1,\n        \"2021-08-11\": 1,\n        \"2021-08-12\": 2,\n        \"2021-08-13\": 1,\n        \"2021-08-14\": 0,\n        \"2021-08-15\": 0,\n        \"2021-08-16\": 3,\n        \"2021-08-17\": 10,\n        \"2021-08-18\": 0,\n        \"2021-08-19\": 1,\n        \"2021-08-20\": 0,\n        \"2021-08-21\": 0,\n        \"2021-08-22\": 0,\n        \"2021-08-23\": 4,\n        \"2021-08-24\": 1,\n        \"2021-08-25\": 6,\n        \"2021-08-26\": 2,\n        \"2021-08-27\": 1,\n        \"2021-08-28\": 1,\n        \"2021-08-29\": 1,\n        \"2021-08-30\": 5,\n        \"2021-08-31\": 5,\n        \"2021-09-01\": 5,\n        \"2021-09-02\": 3,\n        \"2021-09-03\": 3,\n        \"2021-09-04\": 5,\n        \"2021-09-05\": 0,\n        \"2021-09-06\": 2,\n        \"2021-09-07\": 31,\n        \"2021-09-08\": 1,\n        \"2021-09-09\": 1,\n        \"2021-09-10\": 1,\n        \"2021-09-11\": 0,\n        \"2021-09-12\": 0,\n        \"2021-09-13\": 1,\n        \"2021-09-14\": 0,\n        \"2021-09-15\": 2,\n        \"2021-09-16\": 1,\n        \"2021-09-17\": 0,\n        \"2021-09-18\": 3,\n        \"2021-09-19\": 1,\n        \"2021-09-20\": 1,\n        \"2021-09-21\": 2,\n        \"2021-09-22\": 2,\n        \"2021-09-23\": 2,\n        \"2021-09-24\": 2,\n        \"2021-09-25\": 12,\n        \"2021-09-26\": 2,\n        \"2021-09-27\": 24,\n        \"2021-09-28\": 5,\n        \"2021-09-29\": 1,\n        \"2021-09-30\": 1,\n        \"2021-10-01\": 1,\n        \"2021-10-02\": 0,\n        \"2021-10-03\": 1,\n        \"2021-10-04\": 1,\n        \"2021-10-05\": 1,\n        \"2021-10-06\": 1,\n        \"2021-10-07\": 2,\n        \"2021-10-08\": 0,\n        \"2021-10-09\": 1,\n        \"2021-10-10\": 0,\n        \"2021-10-11\": 3,\n        \"2021-10-12\": 5,\n        \"2021-10-13\": 3,\n        \"2021-10-14\": 14,\n        \"2021-10-15\": 0,\n        \"2021-10-16\": 0,\n        \"2021-10-17\": 5,\n        \"2021-10-18\": 2,\n        \"2021-10-19\": 10,\n        \"2021-10-20\": 0,\n        \"2021-10-21\": 2,\n        \"2021-10-22\": 0,\n        \"2021-10-23\": 0,\n        \"2021-10-24\": 0,\n        \"2021-10-25\": 0,\n        \"2021-10-26\": 0,\n        \"2021-10-27\": 0,\n        \"2021-10-28\": 0,\n        \"2021-10-29\": 0,\n        \"2021-10-30\": 0,\n        \"2021-10-31\": 0,\n        \"2021-11-01\": 0,\n        \"2021-11-02\": 1,\n        \"2021-11-03\": 0,\n        \"2021-11-04\": 12,\n        \"2021-11-05\": 0,\n        \"2021-11-06\": 3,\n        \"2021-11-07\": 13,\n        \"2021-11-08\": 21,\n        \"2021-11-09\": 24,\n        \"2021-11-10\": 15,\n        \"2021-11-11\": 22,\n        \"2021-11-12\": 0,\n        \"2021-11-13\": 0,\n        \"2021-11-14\": 1,\n        \"2021-11-15\": 3\n    }\n}"}],"_postman_id":"b0605c68-580b-4a76-b771-63db81be42ae"},{"name":"구글 로그인","id":"874436fd-6228-4933-9bd3-5e2f9ddfcfb4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/v1/socials/google?redirect_uri=http://localhost:3000/home","description":"<h2 id=\"구글-로그인-페이지-요청-api\">구글 로그인 페이지 요청 API</h2>\n<h4 id=\"response\">response</h4>\n<p>redirect\ngoogle oauth 로그인 페이지로 redirect</p>\n","urlObject":{"path":["v1","v1","socials","google"],"host":["http://localhost:3001"],"query":[{"description":{"content":"<p>돌아갈 client path</p>\n","type":"text/plain"},"key":"redirect_uri","value":"http://localhost:3000/home"}],"variable":[]}},"response":[{"id":"3afae424-7cd4-43e1-b3e2-ec4caa2e0fbd","name":"구글 로그인","originalRequest":{"method":"GET","header":[],"url":"http://localhost:3001/v1/v1/socials/google"},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"리다이렉트"}],"_postman_id":"874436fd-6228-4933-9bd3-5e2f9ddfcfb4"},{"name":"현재 사용자 정보 요청","id":"0aed8163-ba3c-4226-80de-20e2d30e602b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[],"url":"http://localhost:3001/v1/users/me","description":"<h2 id=\"현재-사용자-정보-요청-api\">현재 사용자 정보 요청 API</h2>\n<h4 id=\"request\">request</h4>\n<h4 id=\"response\">response</h4>\n<ul>\n<li>username: String</li>\n<li>userID: String(user id)</li>\n</ul>\n","urlObject":{"path":["v1","users","me"],"host":["http://localhost:3001"],"query":[],"variable":[]}},"response":[{"id":"4de21292-f9cf-4080-a027-ff179bd78065","name":"현재 사용자 정보 요청","originalRequest":{"method":"GET","header":[],"url":"http://localhost:3001/v1/users/me"},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"_id\": \"6189fe77e0b6fb7c282d505f\",\n    \"username\": \"TESTUSERNAME\",\n    \"isRegistered\": true,\n    \"name\": \"\",\n    \"bio\": \"나는 김동민입니다.\",\n    \"follows\": [\n        \"618a30893f3e360fa260e046\"\n    ],\n    \"followers\": [\n        \"618a30893f3e360fa260e046\"\n    ]\n}"}],"_postman_id":"0aed8163-ba3c-4226-80de-20e2d30e602b"},{"name":"로그아웃","id":"3ee570ba-558a-4eac-9c83-9b1f2edb50c0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[],"url":"http://localhost:3001/v1/users/logout","urlObject":{"path":["v1","users","logout"],"host":["http://localhost:3001"],"query":[],"variable":[]}},"response":[{"id":"a69b1237-f635-450c-9dbe-1e0e12541ba5","name":"로그아웃","originalRequest":{"method":"GET","header":[],"url":"http://localhost:3001/v1/users/logout"},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"리다이렉트"}],"_postman_id":"3ee570ba-558a-4eac-9c83-9b1f2edb50c0"},{"name":"티스토리 블로그 인증","id":"646181bf-f4d5-4341-94e4-fa9ff3009a21","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[],"url":"http://localhost:3001/v1/socials/tistory","urlObject":{"path":["v1","socials","tistory"],"host":["http://localhost:3001"],"query":[],"variable":[]}},"response":[],"_postman_id":"646181bf-f4d5-4341-94e4-fa9ff3009a21"},{"name":"벨로그 블로그 이메일 인증","id":"4baae25b-88fd-4077-bff0-c4cc5e0fe514","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"userID\": \"6189fe77e0b6fb7c282d505f\",\n    \"blogUsername\": \"dmin0211\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/socials/velog","urlObject":{"path":["v1","socials","velog"],"host":["http://localhost:3001"],"query":[],"variable":[]}},"response":[],"_postman_id":"4baae25b-88fd-4077-bff0-c4cc5e0fe514"}],"id":"53f39f09-f755-4a5e-95ca-0c0e3339927a","_postman_id":"53f39f09-f755-4a5e-95ca-0c0e3339927a","description":""},{"name":"타임라인","item":[{"name":"타임라인 불러오기","id":"fa3e8c67-9b61-41fb-bf55-ef88adf44bc6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[],"url":"http://localhost:3001/v1/posts?user_id=6194d078928b431f065e0997&cursor=0","description":"<h2 id=\"offset-부터-타임라인-불러오기-api\">Offset 부터 타임라인 불러오기 API</h2>\n<h4 id=\"request\">request</h4>\n<h4 id=\"response\">response</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>\"postList\": [\n    {\n        \"postId\": \"String(post id)\",\n        \"title\": \"\",\n        \"content\": \"\",\n        \"createdAt\": \"Date\",\n        \"isUpdated\": \"boolean\",\n        \"writer\": \"String(user id)\",\n        \"image\": \"String(image url)\",\n        \"type\": \"github | blog | algorithm | normal\",\n        \"link\": \"\",\n        \"likeCount\": \"Int\",\n        \"comments\": [\n            {\n                \"writer\": \"String(user id)\",\n                \"createdAt\": \"Date\",\n                \"isUpdated\": \"boolean\",\n                \"content\": \"\",\n                \"likeCount\": \"Int\"\n            }\n        ]\n    }\n]\n</code></pre>","urlObject":{"path":["v1","posts"],"host":["http://localhost:3001"],"query":[{"description":{"content":"<p>유저 고유 식별자</p>\n","type":"text/plain"},"key":"user_id","value":"6194d078928b431f065e0997"},{"key":"cursor","value":"0"}],"variable":[]}},"response":[{"id":"620155c7-d39a-4c0c-b0cd-87db43e59edf","name":"타임라인 불러오기","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/posts?user_id=userId&cursor=0","host":["http://localhost:3001"],"path":["v1","posts"],"query":[{"key":"user_id","value":"userId","description":"1"},{"key":"cursor","value":"0"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"nextCursor\": 1,\n    \"data\": [\n        {\n            \"_id\": \"6197cd5d7e024b439b2a2ab7\",\n            \"content\": \"내 발바닥\",\n            \"tags\": [],\n            \"type\": \"normal\",\n            \"createdAt\": \"2021-11-19T16:14:21.779Z\",\n            \"updatedAt\": \"2021-11-19T16:14:21.779Z\",\n            \"user\": {\n                \"_id\": \"6194d259dd93761039d5666f\",\n                \"username\": \"beomseok\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/Sk5wcHvx9-ywPmwMhScv-.jpg\"\n            },\n            \"comments\": [\n                {\n                    \"_id\": \"6197cd687e024b439b2a2b0a\",\n                    \"content\": \"test2\",\n                    \"createdAt\": \"2021-11-19T16:14:32.898Z\",\n                    \"updatedAt\": \"2021-11-19T16:14:32.898Z\",\n                    \"user\": {\n                        \"_id\": \"6194d259dd93761039d5666f\",\n                        \"username\": \"beomseok\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/Sk5wcHvx9-ywPmwMhScv-.jpg\"\n                    },\n                    \"likes\": []\n                }\n            ],\n            \"likes\": [],\n            \"images\": [\n                {\n                    \"_id\": \"6197cd5d7e024b439b2a2aba\",\n                    \"url\": \"https://kr.object.ncloudstorage.com/cocoo/posts/vS_NDs836DlR6n4KH9QTU.jpg\"\n                }\n            ]\n        },\n        {\n            \"_id\": \"6197c543705169a1ca1aa9ef\",\n            \"title\": \"양방향 통신(polling, long polling, websocket)\",\n            \"content\": \"Tistory 글을 연동해보았어요!!\",\n            \"tags\": [],\n            \"type\": \"blog\",\n            \"link\": \"https://blog.dongmin.dev/14\",\n            \"external\": {\n                \"type\": \"tistory\",\n                \"identity\": \"dongmin-tech\",\n                \"target\": \"14\"\n            },\n            \"createdAt\": \"2021-11-19T15:39:47.448Z\",\n            \"updatedAt\": \"2021-11-19T16:00:50.290Z\",\n            \"externalContent\": \"<h4 data-ke-size=\\\"size20\\\"><b>Polling</b></h4>\\n<p data-ke-size=\\\"size16\\\">Polling 방식은 간단하게 특정 시간마다 클라이언트에서 서버로 요청을 하며 응답을 통해 데이터를 갱신합니다. 즉, 아무런 server의 event 가 발생하지 않더라도 모든 클라이언트는 지속적으로 server에게 XMLHttpRequest를 보내게 됩니다. 또한 실시간으로 메시지 전달이 필요한 경우 요청을 보내는 주기가 짧아질 것입니다. 이는 서버의 불필요한 트래픽이 발생합니다.</p>\\n<p data-ke-size=\\\"size16\\\">매 주기마다 서버는 Request의 Header parser 하며, query를 통해 새로운 데이터에 대한 응답을 생성해서 보낼 것입니다. 그 후 서버는 모든 리소스에 대한 정리 작업도 진행해야 할 것입니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<h4 data-ke-size=\\\"size20\\\"><b>Long Polling</b></h4>\\n<p data-ke-size=\\\"size16\\\">기존 양방향 통신으로 사용되는 polling 방식보다 효율적인 방식의 기법입니다.</p>\\n<p data-ke-size=\\\"size16\\\">서버에 주기적으로 요청을 보내는 방식이 아닌 서버에서 클라이언트의 연결을 Keep Alive 헤더를 통해 유지하는 방식입니다.</p>\\n<p data-ke-size=\\\"size16\\\"><b>동작 방식</b></p>\\n<p><figure class='imageblock alignLeft' data-origin-width=\\\"1132\\\" data-origin-height=\\\"896\\\" data-filename=\\\"longpolling.png\\\" width=\\\"394\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"><span data-url='https://blog.kakaocdn.net/dn/wayei/btriDxzznNK/JtMHNogKkthQ3z7sCUFI80/img.png' data-lightbox='lightbox' data-alt=''><img src='https://blog.kakaocdn.net/dn/wayei/btriDxzznNK/JtMHNogKkthQ3z7sCUFI80/img.png' srcset='https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwayei%2FbtriDxzznNK%2FJtMHNogKkthQ3z7sCUFI80%2Fimg.png' data-origin-width=\\\"1132\\\" data-origin-height=\\\"896\\\" data-filename=\\\"longpolling.png\\\" width=\\\"394\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"></span></figure></p>\\n<ul style=\\\"list-style-type: disc;\\\" data-ke-list-type=\\\"disc\\\">\\n<li>우선 Client는 Server로 Keep Alive 헤더를 포함한 GET request를 보내며 응답을 받을 때까지 연결을 유지합니다.</li>\\n<li>Server의 Event 가 발생 시 Client의 GET request에 대해서 응답을 보내게 됩니다.</li>\\n<li>응답을 받은 Client는 다시 동일한 GET request를 보내며 다음 응답을 기다립니다.</li>\\n</ul>\\n<p data-ke-size=\\\"size16\\\">확실히 Server Event 발생 시에만 XMLHttpRequest 가 발생하며 불필요한 트래픽이 발생하지 않으며 실시간 메시지 전달이 가능합니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<p data-ke-size=\\\"size16\\\"><b>단점</b></p>\\n<p data-ke-size=\\\"size16\\\">하지만 주기적으로 데이터들을 한 번에 보내는 polling과 달리 Server Event 시마다 Server의 응답, Client의 GET 요청이 발생합니다. 당연히 서버는 동일하게 HTTP request의 header parser 작업과 응답 객체의 생성 작업을 거칩니다. 즉, 실시간으로 잦은 서버 상태 변경의 요청 즉 caching 되지 않는 request 통신이 이루어지는 경우 polling 보다 더 많은 트래픽이 발생할 수 있습니다.</p>\\n<p data-ke-size=\\\"size16\\\">추가적으로 relative message order의 문제점도 존재합니다.</p>\\n<p><figure class='imageblock alignLeft' data-origin-width=\\\"1024\\\" data-origin-height=\\\"784\\\" data-filename=\\\"cons1.png\\\" width=\\\"457\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"><span data-url='https://blog.kakaocdn.net/dn/dejRWc/btriDxNa1dm/nVRQa4jWRk2cAKRSs4sjZ0/img.png' data-lightbox='lightbox' data-alt=''><img src='https://blog.kakaocdn.net/dn/dejRWc/btriDxNa1dm/nVRQa4jWRk2cAKRSs4sjZ0/img.png' srcset='https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdejRWc%2FbtriDxNa1dm%2FnVRQa4jWRk2cAKRSs4sjZ0%2Fimg.png' data-origin-width=\\\"1024\\\" data-origin-height=\\\"784\\\" data-filename=\\\"cons1.png\\\" width=\\\"457\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"></span></figure></p>\\n<p data-ke-size=\\\"size16\\\">동일한 서버 리소스를 사용하는 클라이언트가 다중 탭으로 동일한 요청을 보내고 해당 요청에 대해서 서버가 Database 작업을 수행한다면 중복 데이터가 2번 저장 혹은 갱신되게 됩니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<p><figure class='imageblock alignLeft' data-origin-width=\\\"1046\\\" data-origin-height=\\\"810\\\" data-filename=\\\"cons2.png\\\" width=\\\"452\\\" height=\\\"350\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"><span data-url='https://blog.kakaocdn.net/dn/DV44W/btriHBVwqOO/wEVKOV8Z9ocXOEgwMWKhK0/img.png' data-lightbox='lightbox' data-alt=''><img src='https://blog.kakaocdn.net/dn/DV44W/btriHBVwqOO/wEVKOV8Z9ocXOEgwMWKhK0/img.png' srcset='https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDV44W%2FbtriHBVwqOO%2FwEVKOV8Z9ocXOEgwMWKhK0%2Fimg.png' data-origin-width=\\\"1046\\\" data-origin-height=\\\"810\\\" data-filename=\\\"cons2.png\\\" width=\\\"452\\\" height=\\\"350\\\" data-ke-mobilestyle=\\\"widthOrigin\\\"></span></figure></p>\\n<p data-ke-size=\\\"size16\\\">또한 서버의 구현에 따라 클라이언트 인스턴스가 메시지 수신을 전혀 하지 못하는 경우가 있습니다. Server event 가 발생하여 응답을 보냈으나 네트워크, 브라우저의 문제 등의 경우로 누락된 경우 Client 가 정상적으로 응답받은 것을 확인하지 못하게 될 것입니다. Client 역시 응답이 중간에 누락된 것을 확인하지 못하고 더 이상 server 와의 통신이 이루어질 수 없을 것입니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<h4 data-ke-size=\\\"size20\\\"><b>Websocket</b></h4>\\n<p data-ke-size=\\\"size16\\\"><b>동작 방식</b></p>\\n<p data-ke-size=\\\"size16\\\">websocket 은 기존의 http protocol 요청을 사용한 양방향 통신(클라이언트가 요청이 없으면 서버에게 응답을 받을 수 없는 구조)을 문제를 해결하기 위해 나온 transport protocol입니다.</p>\\n<p data-ke-size=\\\"size16\\\">처음 서버와 클라이언트 간 http protocol 요청을 통해 handshake 과정을 거칩니다. 웹소켓 연결이 가능함을 handshake 과정에서 판단되면 서버와 클라이언트는 ws protocol로 데이터를 전송할 수 있습니다. 이때 데이터 전송에서 기존 http protocol 양방향 통신 방식의 문제 중 하나인 request header 정보로 인한 불필요한 overhead 가 적습니다.</p>\\n<p data-ke-size=\\\"size16\\\">&nbsp;</p>\\n<p data-ke-size=\\\"size16\\\"><b>단점</b></p>\\n<ul style=\\\"list-style-type: disc;\\\" data-ke-list-type=\\\"disc\\\">\\n<li>우선 2011 년 이전의 브라우저는 지원하지 않는 단점이 있습니다.</li>\\n<li>stateful protocol 이므로 연결의 종료에 대해서 서버에서 적절한 대처가 있어야 합니다.</li>\\n<li>소켓을 연결을 유지하는 것만으로 비용이 듭니다. 실시간으로 통신을 유지해야 하는 경우가 아니라면 http protocol 방식이 유용할 것입니다.</li>\\n</ul>\\n<h4 data-ke-size=\\\"size20\\\"><a href=\\\"http://Socket.io\\\">Socket.io</a></h4>\\n<p data-ke-size=\\\"size16\\\">websocket의 추가적인 단점은 개발의 피로도입니다. 이러한 피로도를 줄여주는 라이브러리가 <a href=\\\"http://socket.io\\\">Socket.io 입니다.</a> <a href=\\\"http://Socket.io\\\">Socket.io</a> <a href=\\\"%5B%3Chttps://socket.io/docs/v3/how-it-works/%3E%5D(%3Chttps://socket.io/docs/v3/how-it-works/%3E)\\\">How it works</a> 글을 읽어보면 기본 Client와 Server의 연결 방식의 설정은 long polling 방식입니다. 그러한 이유는 Websocket 방식은 브라우저 버전, 프락시, 개인 방화벽, 바이러스 백신 소프트웨어로 인해 항상 연결이 가능한 것은 아닙니다. 그 후 Websocket upgrade 가 가능하다면 Websocket 방식을 사용합니다.</p>\\n<p data-ke-size=\\\"size16\\\">이 글의 내용을 확인해 봤을 때 <a href=\\\"http://Socket.io\\\">Socket.io</a> 라이브러리는 Websocket 방식의 fallback으로 long polling 방식을 사용하고 있습니다. 하지만 long polling 방식은 위에서 확인한 것과 같이 단점이 존재하며 그것은 Websocket 방식 역시 마찬가지입니다.</p>\\n<p data-ke-size=\\\"size16\\\">마지막으로 필자의 생각입니다. 아직 각 양방향 통신의 단점을 완전히 해결할 수 있는 방식이 나오지 않았고 가능한지도 짐작할 수 없습니다. 현재로서는 구현하고 있는 서비스에 대한 알맞은 통신 방식을 선정하여 <a href=\\\"http://Socket.io\\\">Socket.io</a> fallback 설정을 하는 것을 생각해봐야 할 것 같습니다.</p>\",\n            \"user\": {\n                \"_id\": \"6194d078928b431f065e0997\",\n                \"username\": \"kdmin0211\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/3b7vc76ObUoOEXwo9ho6T.png\"\n            },\n            \"comments\": [\n                {\n                    \"_id\": \"6197cadb7e024b439b2a287a\",\n                    \"content\": \"멋지네요👍\",\n                    \"createdAt\": \"2021-11-19T16:03:39.643Z\",\n                    \"updatedAt\": \"2021-11-19T16:03:39.643Z\",\n                    \"user\": {\n                        \"_id\": \"6194d259dd93761039d5666f\",\n                        \"username\": \"beomseok\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/Sk5wcHvx9-ywPmwMhScv-.jpg\"\n                    },\n                    \"likes\": []\n                }\n            ],\n            \"likes\": [\n                {\n                    \"_id\": \"6197cadd252efc260506a481\",\n                    \"createdAt\": \"2021-11-19T16:03:42.116Z\",\n                    \"user\": {\n                        \"_id\": \"6194d259dd93761039d5666f\",\n                        \"username\": \"beomseok\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/Sk5wcHvx9-ywPmwMhScv-.jpg\"\n                    }\n                }\n            ],\n            \"images\": []\n        },\n        {\n            \"_id\": \"619667b185cd9fec558bb140\",\n            \"content\": \"저는 뿌리 깊은 개발자입니다.\",\n            \"tags\": [],\n            \"type\": \"normal\",\n            \"createdAt\": \"2021-11-18T14:48:17.255Z\",\n            \"updatedAt\": \"2021-11-18T14:48:17.255Z\",\n            \"user\": {\n                \"_id\": \"6194d21006d472d1f4839373\",\n                \"username\": \"hyunmindev\",\n                \"profileImage\": \"/images/default_profile_image.jpg\"\n            },\n            \"comments\": [],\n            \"likes\": [\n                {\n                    \"_id\": \"619667b5252efc260505522e\",\n                    \"createdAt\": \"2021-11-18T14:48:21.833Z\",\n                    \"user\": {\n                        \"_id\": \"6194d21006d472d1f4839373\",\n                        \"username\": \"hyunmindev\",\n                        \"profileImage\": \"/images/default_profile_image.jpg\"\n                    }\n                }\n            ],\n            \"images\": [\n                {\n                    \"_id\": \"619667b185cd9fec558bb143\",\n                    \"url\": \"https://kr.object.ncloudstorage.com/cocoo/posts/pebp4IHml0PIrRF3TSuyJ.jpg\"\n                }\n            ]\n        },\n        {\n            \"_id\": \"6196487985cd9fec558b88a5\",\n            \"content\": \"팀원들과 즐거운 명세서 작성... 다시는 안봤으면 좋겠습니다ㅎㅎ\",\n            \"tags\": [],\n            \"type\": \"normal\",\n            \"createdAt\": \"2021-11-18T12:35:05.886Z\",\n            \"updatedAt\": \"2021-11-18T12:35:05.886Z\",\n            \"user\": {\n                \"_id\": \"6194d078928b431f065e0997\",\n                \"username\": \"kdmin0211\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/3b7vc76ObUoOEXwo9ho6T.png\"\n            },\n            \"comments\": [],\n            \"likes\": [\n                {\n                    \"_id\": \"61966246252efc2605052caa\",\n                    \"createdAt\": \"2021-11-18T14:25:10.718Z\",\n                    \"user\": {\n                        \"_id\": \"6195daa5856537d371ba17f7\",\n                        \"username\": \"codingegg\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                    }\n                },\n                {\n                    \"_id\": \"619665bf252efc260505413f\",\n                    \"createdAt\": \"2021-11-18T14:39:59.481Z\",\n                    \"user\": {\n                        \"_id\": \"6194d078928b431f065e0997\",\n                        \"username\": \"kdmin0211\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/3b7vc76ObUoOEXwo9ho6T.png\"\n                    }\n                }\n            ],\n            \"images\": [\n                {\n                    \"_id\": \"6196487985cd9fec558b88a8\",\n                    \"url\": \"https://kr.object.ncloudstorage.com/cocoo/posts/wHu0zi5k-64ZWhr1Ti75p.png\"\n                },\n                {\n                    \"_id\": \"6196487985cd9fec558b88a9\",\n                    \"url\": \"https://kr.object.ncloudstorage.com/cocoo/posts/91aR6iOEC6SwDXnA6JsMh.png\"\n                }\n            ]\n        },\n        {\n            \"_id\": \"619647ad85cd9fec558b8273\",\n            \"content\": \"저의 이번주 활동 시간입니다~~~ 어떤가요?? 다들 공유해주세요!!\",\n            \"tags\": [],\n            \"type\": \"normal\",\n            \"createdAt\": \"2021-11-18T12:31:41.544Z\",\n            \"updatedAt\": \"2021-11-18T12:31:41.544Z\",\n            \"user\": {\n                \"_id\": \"6194d078928b431f065e0997\",\n                \"username\": \"kdmin0211\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/3b7vc76ObUoOEXwo9ho6T.png\"\n            },\n            \"comments\": [],\n            \"likes\": [],\n            \"images\": [\n                {\n                    \"_id\": \"619647ad85cd9fec558b8276\",\n                    \"url\": \"https://kr.object.ncloudstorage.com/cocoo/posts/_A4mwNfNzLvX5jntnSP77.png\"\n                }\n            ]\n        },\n        {\n            \"_id\": \"6196471a85cd9fec558b7cce\",\n            \"content\": \"개발 개많이 했쥬\",\n            \"tags\": [],\n            \"type\": \"normal\",\n            \"createdAt\": \"2021-11-18T12:29:14.646Z\",\n            \"updatedAt\": \"2021-11-18T12:29:14.646Z\",\n            \"user\": {\n                \"_id\": \"6195daa5856537d371ba17f7\",\n                \"username\": \"codingegg\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n            },\n            \"comments\": [\n                {\n                    \"_id\": \"619665e085cd9fec558ba543\",\n                    \"content\": \"개발 열심히 하시네요!!!\",\n                    \"createdAt\": \"2021-11-18T14:40:32.903Z\",\n                    \"updatedAt\": \"2021-11-18T14:40:32.903Z\",\n                    \"user\": {\n                        \"_id\": \"6194d078928b431f065e0997\",\n                        \"username\": \"kdmin0211\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/3b7vc76ObUoOEXwo9ho6T.png\"\n                    },\n                    \"likes\": []\n                },\n                {\n                    \"_id\": \"619724ee85cd9fec558bbc14\",\n                    \"content\": \"으\",\n                    \"createdAt\": \"2021-11-19T04:15:42.370Z\",\n                    \"updatedAt\": \"2021-11-19T04:15:42.370Z\",\n                    \"user\": {\n                        \"_id\": \"6196281785cd9fec558b5d1a\",\n                        \"username\": \"admin\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/ZjGsFMLTvibUnvqAuiJJ2.png\"\n                    },\n                    \"likes\": []\n                }\n            ],\n            \"likes\": [\n                {\n                    \"_id\": \"619665e2252efc2605054330\",\n                    \"createdAt\": \"2021-11-18T14:40:34.563Z\",\n                    \"user\": {\n                        \"_id\": \"6194d078928b431f065e0997\",\n                        \"username\": \"kdmin0211\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/3b7vc76ObUoOEXwo9ho6T.png\"\n                    }\n                }\n            ],\n            \"images\": [\n                {\n                    \"_id\": \"6196471a85cd9fec558b7cd1\",\n                    \"url\": \"https://kr.object.ncloudstorage.com/cocoo/posts/qMtGW74y5_G11ho9ea05a.PNG\"\n                }\n            ]\n        },\n        {\n            \"_id\": \"6196467285cd9fec558b7a27\",\n            \"content\": \"아 개발 너무 힘들어.......\\n살려줘잉........\",\n            \"tags\": [],\n            \"type\": \"normal\",\n            \"createdAt\": \"2021-11-18T12:26:26.485Z\",\n            \"updatedAt\": \"2021-11-18T12:26:26.485Z\",\n            \"user\": {\n                \"_id\": \"6195daa5856537d371ba17f7\",\n                \"username\": \"codingegg\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n            },\n            \"comments\": [\n                {\n                    \"_id\": \"619664e585cd9fec558b9c9d\",\n                    \"content\": \"너무 힘들어보여요!!!\",\n                    \"createdAt\": \"2021-11-18T14:36:21.765Z\",\n                    \"updatedAt\": \"2021-11-18T14:36:21.765Z\",\n                    \"user\": {\n                        \"_id\": \"6194d078928b431f065e0997\",\n                        \"username\": \"kdmin0211\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/3b7vc76ObUoOEXwo9ho6T.png\"\n                    },\n                    \"likes\": []\n                }\n            ],\n            \"likes\": [],\n            \"images\": [\n                {\n                    \"_id\": \"6196467285cd9fec558b7a2a\",\n                    \"url\": \"https://kr.object.ncloudstorage.com/cocoo/posts/g5znoNQIOts52zCWXylOb.PNG\"\n                }\n            ]\n        },\n        {\n            \"_id\": \"6196460885cd9fec558b77a3\",\n            \"content\": \"고양이 귀여웡~~헤헤\\n고양이 최고야\",\n            \"tags\": [],\n            \"type\": \"normal\",\n            \"createdAt\": \"2021-11-18T12:24:40.052Z\",\n            \"updatedAt\": \"2021-11-18T12:24:40.052Z\",\n            \"user\": {\n                \"_id\": \"6195daa5856537d371ba17f7\",\n                \"username\": \"codingegg\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n            },\n            \"comments\": [],\n            \"likes\": [],\n            \"images\": [\n                {\n                    \"_id\": \"6196460885cd9fec558b77a6\",\n                    \"url\": \"https://kr.object.ncloudstorage.com/cocoo/posts/ztSppeR1TK7tv36_ItFm1.jpg\"\n                },\n                {\n                    \"_id\": \"6196460885cd9fec558b77a7\",\n                    \"url\": \"https://kr.object.ncloudstorage.com/cocoo/posts/ncGAB5fHuvCD2QwTWlehJ.jpg\"\n                }\n            ]\n        },\n        {\n            \"_id\": \"6196427185cd9fec558b6563\",\n            \"content\": \"테스트 합니다\",\n            \"tags\": [],\n            \"type\": \"normal\",\n            \"createdAt\": \"2021-11-18T12:09:21.255Z\",\n            \"updatedAt\": \"2021-11-18T12:09:21.255Z\",\n            \"user\": {\n                \"_id\": \"6194d078928b431f065e0997\",\n                \"username\": \"kdmin0211\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/3b7vc76ObUoOEXwo9ho6T.png\"\n            },\n            \"comments\": [\n                {\n                    \"_id\": \"6196448785cd9fec558b6eff\",\n                    \"content\": \"앙 부캠띠~\",\n                    \"createdAt\": \"2021-11-18T12:18:15.977Z\",\n                    \"updatedAt\": \"2021-11-18T12:18:15.977Z\",\n                    \"user\": {\n                        \"_id\": \"6195daa5856537d371ba17f7\",\n                        \"username\": \"codingegg\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                    },\n                    \"likes\": [\n                        {\n                            \"_id\": \"619665eb252efc2605054413\",\n                            \"createdAt\": \"2021-11-18T14:40:43.011Z\",\n                            \"user\": {\n                                \"_id\": \"6194d078928b431f065e0997\",\n                                \"username\": \"kdmin0211\",\n                                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/3b7vc76ObUoOEXwo9ho6T.png\"\n                            }\n                        }\n                    ]\n                },\n                {\n                    \"_id\": \"6196448e85cd9fec558b6f7a\",\n                    \"content\": \"헤헤 재밌당\",\n                    \"createdAt\": \"2021-11-18T12:18:22.751Z\",\n                    \"updatedAt\": \"2021-11-18T12:18:22.751Z\",\n                    \"user\": {\n                        \"_id\": \"6195daa5856537d371ba17f7\",\n                        \"username\": \"codingegg\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                    },\n                    \"likes\": [\n                        {\n                            \"_id\": \"6196448f252efc260504d202\",\n                            \"createdAt\": \"2021-11-18T12:18:23.428Z\",\n                            \"user\": {\n                                \"_id\": \"6195daa5856537d371ba17f7\",\n                                \"username\": \"codingegg\",\n                                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                            }\n                        },\n                        {\n                            \"_id\": \"619665eb252efc260505441e\",\n                            \"createdAt\": \"2021-11-18T14:40:43.709Z\",\n                            \"user\": {\n                                \"_id\": \"6194d078928b431f065e0997\",\n                                \"username\": \"kdmin0211\",\n                                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/3b7vc76ObUoOEXwo9ho6T.png\"\n                            }\n                        }\n                    ]\n                }\n            ],\n            \"likes\": [\n                {\n                    \"_id\": \"6196438a252efc260504ccdb\",\n                    \"createdAt\": \"2021-11-18T12:14:02.965Z\",\n                    \"user\": {\n                        \"_id\": \"6195daa5856537d371ba17f7\",\n                        \"username\": \"codingegg\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                    }\n                },\n                {\n                    \"_id\": \"61964488252efc260504d186\",\n                    \"createdAt\": \"2021-11-18T12:18:16.022Z\",\n                    \"user\": {\n                        \"_id\": \"6194d078928b431f065e0997\",\n                        \"username\": \"kdmin0211\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/3b7vc76ObUoOEXwo9ho6T.png\"\n                    }\n                }\n            ],\n            \"images\": [\n                {\n                    \"_id\": \"6196427185cd9fec558b6566\",\n                    \"url\": \"https://kr.object.ncloudstorage.com/cocoo/posts/OFUmeusyPIQuBOF479PmD.png\"\n                }\n            ]\n        },\n        {\n            \"_id\": \"6196425d85cd9fec558b6524\",\n            \"content\": \"배포 된건가요??\",\n            \"tags\": [],\n            \"type\": \"normal\",\n            \"createdAt\": \"2021-11-18T12:09:01.464Z\",\n            \"updatedAt\": \"2021-11-18T12:09:01.464Z\",\n            \"user\": {\n                \"_id\": \"6194d078928b431f065e0997\",\n                \"username\": \"kdmin0211\",\n                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/3b7vc76ObUoOEXwo9ho6T.png\"\n            },\n            \"comments\": [\n                {\n                    \"_id\": \"6196445f85cd9fec558b6dd1\",\n                    \"content\": \"네 배포 됬습니다~\",\n                    \"createdAt\": \"2021-11-18T12:17:35.802Z\",\n                    \"updatedAt\": \"2021-11-18T12:17:35.802Z\",\n                    \"user\": {\n                        \"_id\": \"6195daa5856537d371ba17f7\",\n                        \"username\": \"codingegg\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                    },\n                    \"likes\": [\n                        {\n                            \"_id\": \"61964476252efc260504d0f6\",\n                            \"createdAt\": \"2021-11-18T12:17:58.569Z\",\n                            \"user\": {\n                                \"_id\": \"6195daa5856537d371ba17f7\",\n                                \"username\": \"codingegg\",\n                                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                            }\n                        },\n                        {\n                            \"_id\": \"61964486252efc260504d16f\",\n                            \"createdAt\": \"2021-11-18T12:18:14.108Z\",\n                            \"user\": {\n                                \"_id\": \"6194d078928b431f065e0997\",\n                                \"username\": \"kdmin0211\",\n                                \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/3b7vc76ObUoOEXwo9ho6T.png\"\n                            }\n                        }\n                    ]\n                }\n            ],\n            \"likes\": [\n                {\n                    \"_id\": \"61964310252efc260504c9ce\",\n                    \"createdAt\": \"2021-11-18T12:12:00.542Z\",\n                    \"user\": {\n                        \"_id\": \"6195daa5856537d371ba17f7\",\n                        \"username\": \"codingegg\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                    }\n                },\n                {\n                    \"_id\": \"6196448e252efc260504d1eb\",\n                    \"createdAt\": \"2021-11-18T12:18:22.134Z\",\n                    \"user\": {\n                        \"_id\": \"6194d078928b431f065e0997\",\n                        \"username\": \"kdmin0211\",\n                        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/3b7vc76ObUoOEXwo9ho6T.png\"\n                    }\n                }\n            ],\n            \"images\": [\n                {\n                    \"_id\": \"6196425d85cd9fec558b6527\",\n                    \"url\": \"https://kr.object.ncloudstorage.com/cocoo/posts/KiuVtiguiu_0qELtjgMRK.png\"\n                }\n            ]\n        }\n    ]\n}"}],"_postman_id":"fa3e8c67-9b61-41fb-bf55-ef88adf44bc6"},{"name":"포스트 좋아요 리스트 불러오기","id":"da44c9e2-5077-4679-9fd6-d922e969476c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/posts/:post_id/likes","description":"<h2 id=\"포스트를-좋아요-누른-사용자-정보-리스트를-가져오는-api\">포스트를 좋아요 누른 사용자 정보 리스트를 가져오는 API</h2>\n<h4 id=\"request\">request</h4>\n<h4 id=\"response\">response</h4>\n<ul>\n<li>users: Object[]<ul>\n<li>username</li>\n<li>profileImage</li>\n</ul>\n</li>\n</ul>\n","urlObject":{"path":["v1","posts",":post_id","likes"],"host":["http://localhost:3001"],"query":[],"variable":[{"description":{"content":"<p>포스트 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"6194d078928b431f065e0997","key":"post_id"}]}},"response":[{"id":"e6d6d0c3-75a4-4761-820d-f11999b34f3d","name":"포스트 좋아요 리스트 불러오기","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/posts/:post_id/likes","host":["http://localhost:3001"],"path":["v1","posts",":post_id","likes"],"variable":[{"key":"post_id","value":"61951fc95c66586c0d137f28","description":"포스트 고유 식별자"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": []\n}"}],"_postman_id":"da44c9e2-5077-4679-9fd6-d922e969476c"},{"name":"포스트 좋아요","id":"e5113639-d464-485e-aac1-62033b67dc99","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"userID\": \"6195daa5856537d371ba17f7\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/posts/:post_id/likes","description":"<h2 id=\"게시글에-대하여-좋아요-추가-api\">게시글에 대하여 좋아요 추가 API</h2>\n<h4 id=\"request\">request</h4>\n<ul>\n<li>userID: String (user id)</li>\n</ul>\n<h4 id=\"response\">response</h4>\n<ul>\n<li>likeID: Int (like id)</li>\n</ul>\n","urlObject":{"path":["v1","posts",":post_id","likes"],"host":["http://localhost:3001"],"query":[],"variable":[{"description":{"content":"<p>포스트 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"61951fc95c66586c0d137f28","key":"post_id"}]}},"response":[{"id":"f8280865-cfd8-4167-b5e5-63d9809982f9","name":"포스트 좋아요","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"userID\": \"String (user id)\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:3001/v1/posts/:post_id/likes","host":["http://localhost:3001"],"path":["v1","posts",":post_id","likes"],"variable":[{"key":"post_id","value":"61911e29eb27399661e66591","description":"포스트 고유 식별자"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": {\n        \"_id\": \"61978983252efc2605062490\"\n    }\n}"}],"_postman_id":"e5113639-d464-485e-aac1-62033b67dc99"},{"name":"포스트 좋아요 취소","id":"fff53b87-e341-4051-8a17-86f84f5faa64","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n    \"userID\": \"6195daa5856537d371ba17f7\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/posts/:post_id/likes/:like_id","description":"<h2 id=\"게시글에-대하여-좋아요-취소-api\">게시글에 대하여 좋아요 취소 API</h2>\n<h4 id=\"request\">request</h4>\n<h4 id=\"response\">response</h4>\n","urlObject":{"path":["v1","posts",":post_id","likes",":like_id"],"host":["http://localhost:3001"],"query":[],"variable":[{"description":{"content":"<p>포스트 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"61951fc95c66586c0d137f28","key":"post_id"},{"description":{"content":"<p>좋아요 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"61978983252efc2605062490","key":"like_id"}]}},"response":[{"id":"87689385-a57f-4987-9ece-577fc2c7e503","name":"포스트 좋아요 취소","originalRequest":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n    \"userID\": \"6195daa5856537d371ba17f7\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:3001/v1/posts/:post_id/likes/:like_id","host":["http://localhost:3001"],"path":["v1","posts",":post_id","likes",":like_id"],"variable":[{"key":"post_id","value":"61951fc95c66586c0d137f28","description":"포스트 고유 식별자"},{"key":"like_id","value":"61978983252efc2605062490","description":"좋아요 고유 식별자"}]}},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\r\n    \"code\": \"Success\"\r\n}"}],"_postman_id":"fff53b87-e341-4051-8a17-86f84f5faa64"},{"name":"포스트 한개 더보기","id":"28db3775-5aa2-42bf-bd92-ff2165f32f53","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/posts/:post_id","description":"<h2 id=\"포스트의-전체-정보를-불러오는-api\">포스트의 전체 정보를 불러오는 API</h2>\n<h4 id=\"request\">request</h4>\n<h4 id=\"response\">response</h4>\n<ul>\n<li>comments: Object []<ul>\n<li>username</li>\n</ul>\n</li>\n</ul>\n","urlObject":{"path":["v1","posts",":post_id"],"host":["http://localhost:3001"],"query":[],"variable":[{"description":{"content":"<p>포스트 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"619b530a1f295c434f346d92","key":"post_id"}]}},"response":[{"id":"66a32bc6-14ec-4b2e-bef5-41a67887e0b7","name":"포스트 한개 더보기","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/posts/:post_id","host":["http://localhost:3001"],"path":["v1","posts",":post_id"],"variable":[{"key":"post_id","value":"61951fc95c66586c0d137f28","description":"포스트 고유 식별자"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": {\n        \"_id\": \"61951fc95c66586c0d137f28\",\n        \"content\": \"깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브깃허브\",\n        \"tags\": [],\n        \"type\": \"normal\",\n        \"createdAt\": \"2021-11-17T15:29:13.178Z\",\n        \"updatedAt\": \"2021-11-17T15:29:13.178Z\",\n        \"user\": {\n            \"_id\": \"6194d259dd93761039d5666f\",\n            \"username\": \"beomseok\",\n            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/Sk5wcHvx9-ywPmwMhScv-.jpg\"\n        },\n        \"comments\": [\n            {\n                \"_id\": \"61961cb062b16033e3d07e0e\",\n                \"content\": \"test\",\n                \"createdAt\": \"2021-11-18T09:28:16.825Z\",\n                \"updatedAt\": \"2021-11-18T09:28:16.825Z\",\n                \"user\": {\n                    \"_id\": \"6194d21006d472d1f4839373\",\n                    \"username\": \"hyunmindev\",\n                    \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/_8yfBQfhigxB22IiI8Zd9.png\"\n                },\n                \"likes\": [\n                    {\n                        \"_id\": \"61961cb3252efc26050478fb\",\n                        \"createdAt\": \"2021-11-18T09:28:19.216Z\",\n                        \"user\": {\n                            \"_id\": \"6194d21006d472d1f4839373\",\n                            \"username\": \"hyunmindev\",\n                            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/_8yfBQfhigxB22IiI8Zd9.png\"\n                        }\n                    },\n                    {\n                        \"_id\": \"6196328d252efc260504a3de\",\n                        \"createdAt\": \"2021-11-18T11:01:33.446Z\",\n                        \"user\": {\n                            \"_id\": \"6194d259dd93761039d5666f\",\n                            \"username\": \"beomseok\",\n                            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/Sk5wcHvx9-ywPmwMhScv-.jpg\"\n                        }\n                    },\n                    {\n                        \"_id\": \"619644a5252efc260504d252\",\n                        \"createdAt\": \"2021-11-18T12:18:45.535Z\",\n                        \"user\": {\n                            \"_id\": \"6195daa5856537d371ba17f7\",\n                            \"username\": \"codingegg\",\n                            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                        }\n                    }\n                ]\n            },\n            {\n                \"_id\": \"619644a485cd9fec558b6fc0\",\n                \"content\": \"테스트입니당!\",\n                \"createdAt\": \"2021-11-18T12:18:44.868Z\",\n                \"updatedAt\": \"2021-11-18T12:18:44.868Z\",\n                \"user\": {\n                    \"_id\": \"6195daa5856537d371ba17f7\",\n                    \"username\": \"codingegg\",\n                    \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                },\n                \"likes\": [\n                    {\n                        \"_id\": \"61964527252efc260504d52b\",\n                        \"createdAt\": \"2021-11-18T12:20:55.694Z\",\n                        \"user\": {\n                            \"_id\": \"6195daa5856537d371ba17f7\",\n                            \"username\": \"codingegg\",\n                            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                        }\n                    }\n                ]\n            },\n            {\n                \"_id\": \"6196451485cd9fec558b7163\",\n                \"content\": \"깃허브 최고야깃허브 최고야깃허브 최고야깃허브 최고야깃허브 최고야깃허브 최고야깃허브 최고야깃허브 최고야깃허브 최고야깃허브 최고야깃허브 최고야깃허브 최고야깃허브 최고야깃허브 최고야깃허브 최고야깃허브 최고야깃허브 최고야깃허브 최고야깃허브 최고야깃허브 최고야깃허브 최고야\",\n                \"createdAt\": \"2021-11-18T12:20:36.498Z\",\n                \"updatedAt\": \"2021-11-18T12:20:36.498Z\",\n                \"user\": {\n                    \"_id\": \"6195daa5856537d371ba17f7\",\n                    \"username\": \"codingegg\",\n                    \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n                },\n                \"likes\": []\n            }\n        ],\n        \"likes\": [\n            {\n                \"_id\": \"6195aa09252efc260503c691\",\n                \"createdAt\": \"2021-11-18T01:19:06.173Z\",\n                \"user\": {\n                    \"_id\": \"6194d259dd93761039d5666f\",\n                    \"username\": \"beomseok\",\n                    \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/Sk5wcHvx9-ywPmwMhScv-.jpg\"\n                }\n            },\n            {\n                \"_id\": \"619622a4252efc2605048669\",\n                \"createdAt\": \"2021-11-18T09:53:40.694Z\",\n                \"user\": {\n                    \"_id\": \"6194d21006d472d1f4839373\",\n                    \"username\": \"hyunmindev\",\n                    \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/_8yfBQfhigxB22IiI8Zd9.png\"\n                }\n            }\n        ],\n        \"images\": [\n            {\n                \"_id\": \"61951fc95c66586c0d137f2b\",\n                \"url\": \"https://kr.object.ncloudstorage.com/cocoo/posts/iFVJhuH47uhrue3uftEkm.png\"\n            }\n        ]\n    }\n}"}],"_postman_id":"28db3775-5aa2-42bf-bd92-ff2165f32f53"},{"name":"댓글 작성","id":"fb50af8a-788c-4134-be59-c870771a6063","protocolProfileBehavior":{"disableBodyPruning":true,"disabledSystemHeaders":{}},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"userID\": \"6195daa5856537d371ba17f7\",\r\n    \"content\": \"댓글추가\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/posts/:postId/comments","urlObject":{"path":["v1","posts",":postId","comments"],"host":["http://localhost:3001"],"query":[],"variable":[{"type":"any","value":"61951fc95c66586c0d137f24","key":"postId"}]}},"response":[{"id":"f6b1534d-bee6-4abd-af9a-113c0cd63172","name":"댓글 작성","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"userID\": \"6189fe77e0b6fb7c282d505f\",\r\n    \"content\": \"댓글추가\"\r\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:3001/v1/posts/:postId/comments","host":["http://localhost:3001"],"path":["v1","posts",":postId","comments"],"variable":[{"key":"postId","value":"618eb2422ef88e89f24fea4c"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": {\n        \"_id\": \"61978a1fff6757f888929da6\",\n        \"content\": \"댓글추가\",\n        \"createdAt\": \"2021-11-19T11:27:27.684Z\",\n        \"updatedAt\": \"2021-11-19T11:27:27.684Z\",\n        \"user\": {\n            \"_id\": \"6195daa5856537d371ba17f7\",\n            \"username\": \"codingegg\",\n            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/hckb7E4gPRMVvKDZQJffm.jpg\"\n        }\n    }\n}"}],"_postman_id":"fb50af8a-788c-4134-be59-c870771a6063"},{"name":"댓글 삭제","id":"922a620a-4dc5-4b59-9664-ed92cdb52aef","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n    \"userID\": \"6195daa5856537d371ba17f7\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/posts/:post_id/comments/:comment_id","description":"<h2 id=\"댓글-삭제-api\">댓글 삭제 API</h2>\n<h4 id=\"request\">request</h4>\n<h4 id=\"response\">response</h4>\n","urlObject":{"path":["v1","posts",":post_id","comments",":comment_id"],"host":["http://localhost:3001"],"query":[],"variable":[{"description":{"content":"<p>포스트 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"61951fc95c66586c0d137f28","key":"post_id"},{"description":{"content":"<p>댓글 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"61978a1fff6757f888929da6","key":"comment_id"}]}},"response":[{"id":"c9bc3e9d-b9bf-4ab5-ac64-a39e78f8323c","name":"댓글 삭제","originalRequest":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n    \"userID\": \"6189fe77e0b6fb7c282d505f\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:3001/v1/posts/:post_id/comments/:comment_id","host":["http://localhost:3001"],"path":["v1","posts",":post_id","comments",":comment_id"],"variable":[{"key":"post_id","value":"618be55302dd53ca3cb0b559","description":"포스트 고유 식별자"},{"key":"comment_id","value":"61910bf0fa4a938e3a306ad0","description":"댓글 고유 식별자"}]}},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\"\n}"}],"_postman_id":"922a620a-4dc5-4b59-9664-ed92cdb52aef"},{"name":"댓글 좋아요","id":"156261c9-9001-44be-8c9e-cb59b0b842e0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"userID\": \"6195daa5856537d371ba17f7\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/posts/:post_id/comments/:comment_id/likes","description":"<h2 id=\"post-의-댓글에-대하여-좋아요-추가-api\">post 의 댓글에 대하여 좋아요 추가 API</h2>\n<h4 id=\"request\">request</h4>\n<ul>\n<li>userID: String (user id)</li>\n</ul>\n<h4 id=\"response\">response</h4>\n<ul>\n<li>likeID: Int (like id)</li>\n</ul>\n","urlObject":{"path":["v1","posts",":post_id","comments",":comment_id","likes"],"host":["http://localhost:3001"],"query":[],"variable":[{"description":{"content":"<p>포스트 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"61951fc95c66586c0d137f28","key":"post_id"},{"description":{"content":"<p>댓글 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"61961cb062b16033e3d07e0e","key":"comment_id"}]}},"response":[{"id":"951de6dc-7322-46cf-b9c7-589c8d1d2a68","name":"댓글 좋아요","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"userID\": \"6189fe77e0b6fb7c282d505f\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:3001/v1/posts/:post_id/comments/:comment_id/likes","host":["http://localhost:3001"],"path":["v1","posts",":post_id","comments",":comment_id","likes"],"variable":[{"key":"post_id","value":"618be55302dd53ca3cb0b559","description":"포스트 고유 식별자"},{"key":"comment_id","value":"61910bf0fa4a938e3a306ad0","description":"댓글 고유 식별자"}]}},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": {\n        \"_id\": \"61978aaa252efc2605062597\"\n    }\n}"}],"_postman_id":"156261c9-9001-44be-8c9e-cb59b0b842e0"},{"name":"댓글 좋아요 취소","id":"9c637a90-4955-4f41-87a5-403dbf7ae628","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n    \"userID\": \"6189fe77e0b6fb7c282d505f\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/posts/:post_id/comments/:comment_id/likes/:like_id","urlObject":{"path":["v1","posts",":post_id","comments",":comment_id","likes",":like_id"],"host":["http://localhost:3001"],"query":[],"variable":[{"description":{"content":"<p>포스트 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"6191b46f1a44e63a4b93a73d","key":"post_id"},{"description":{"content":"<p>댓글 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"61926ec538bdbd70841832e6","key":"comment_id"},{"description":{"content":"<p>좋아요 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"6194931f252efc260502646f","key":"like_id"}]}},"response":[{"id":"5dfab725-a12e-4e63-94e2-0a9f506ffed8","name":"댓글 좋아요 취소","originalRequest":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n    \"userID\": \"6189fe77e0b6fb7c282d505f\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:3001/v1/posts/:post_id/comments/:comment_id/likes/:like_id","host":["http://localhost:3001"],"path":["v1","posts",":post_id","comments",":comment_id","likes",":like_id"],"variable":[{"key":"post_id","value":"618bc757df50c33c3bb28fc4","description":"포스트 고유 식별자"},{"key":"comment_id","value":"61910bf0fa4a938e3a306ad0","description":"댓글 고유 식별자"},{"key":"like_id","value":"61910c0e252efc2605fbf2cd","description":"좋아요 고유 식별자"}]}},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\"\n}"}],"_postman_id":"9c637a90-4955-4f41-87a5-403dbf7ae628"},{"name":"포스트 삭제","id":"20ff4aca-ff8b-4cf1-bc04-4af21c61fdbe","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n    \"userID\": \"6194d21006d472d1f4839373\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/posts/:post_id","urlObject":{"path":["v1","posts",":post_id"],"host":["http://localhost:3001"],"query":[],"variable":[{"type":"any","value":"6194d4e706d472d1f483946b","key":"post_id"}]}},"response":[{"id":"9a98f606-06eb-46fc-b5a8-99478e043035","name":"포스트 삭제","originalRequest":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n    \"userID\": \"6189fe77e0b6fb7c282d505f\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:3001/v1/posts/:post_id","host":["http://localhost:3001"],"path":["v1","posts",":post_id"],"variable":[{"key":"post_id","value":"61911e29eb27399661e66591"}]}},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\"\n}"}],"_postman_id":"20ff4aca-ff8b-4cf1-bc04-4af21c61fdbe"}],"id":"992e973f-f327-4010-8201-68a4d1349597","_postman_id":"992e973f-f327-4010-8201-68a4d1349597","description":""},{"name":"초기유입","item":[{"name":"팔로우 랜덤 추천","id":"16e52f6b-3f62-4030-8238-8f4834f838ac","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[],"url":"http://localhost:3001/v1/users/:user_id/suggestions","description":"<h2 id=\"초기유입시-랜덤으로-추천되는-사용자-리스트를-가져오는-api\">초기유입시 랜덤으로 추천되는 사용자 리스트를 가져오는 API</h2>\n<h4 id=\"request\">request</h4>\n<h4 id=\"response\">response</h4>\n<ul>\n<li>profileImage: String (url)</li>\n<li>username: String</li>\n<li>userId: String (user id)</li>\n</ul>\n","urlObject":{"path":["v1","users",":user_id","suggestions"],"host":["http://localhost:3001"],"query":[],"variable":[{"description":{"content":"<p>유저 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"6195daa5856537d371ba17f7","key":"user_id"}]}},"response":[{"id":"89a9103a-49e8-45bb-82ae-0f3f8ce84b64","name":"팔로우 랜덤 추천","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/users/:user_id/suggestions","host":["http://localhost:3001"],"path":["v1","users",":user_id","suggestions"],"variable":[{"key":"user_id","value":"6189fe77e0b6fb7c282d505f","description":"유저 고유 식별자"}]}},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\",\n    \"data\": [\n        {\n            \"_id\": \"619662746c117dac037ccb08\",\n            \"username\": \"hello_world\",\n            \"profileImage\": \"/images/default_profile_image.jpg\"\n        },\n        {\n            \"_id\": \"6196630d6c117dac037ccb12\",\n            \"username\": \"mark_elliot_zuckerberg\",\n            \"profileImage\": \"/images/default_profile_image.jpg\"\n        },\n        {\n            \"_id\": \"619662666c117dac037ccb07\",\n            \"username\": \"zigae\",\n            \"profileImage\": \"/images/default_profile_image.jpg\"\n        },\n        {\n            \"_id\": \"6194d078928b431f065e0997\",\n            \"username\": \"kdmin0211\",\n            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/3b7vc76ObUoOEXwo9ho6T.png\"\n        },\n        {\n            \"_id\": \"6197695685cd9fec558bc47a\",\n            \"username\": \"shinn338\",\n            \"profileImage\": \"/images/default_profile_image.jpg\"\n        },\n        {\n            \"_id\": \"61973c7a85cd9fec558bc191\",\n            \"username\": \"hi\",\n            \"profileImage\": \"/images/default_profile_image.jpg\"\n        },\n        {\n            \"_id\": \"619662a76c117dac037ccb0e\",\n            \"username\": \"cokiri\",\n            \"profileImage\": \"/images/default_profile_image.jpg\"\n        },\n        {\n            \"_id\": \"6196628f6c117dac037ccb0d\",\n            \"username\": \"dongmindev\",\n            \"profileImage\": \"/images/default_profile_image.jpg\"\n        },\n        {\n            \"_id\": \"6194d21006d472d1f4839373\",\n            \"username\": \"hyunmindev\",\n            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/_8yfBQfhigxB22IiI8Zd9.png\"\n        },\n        {\n            \"_id\": \"619662be6c117dac037ccb10\",\n            \"username\": \"zooooooooooooooooom\",\n            \"profileImage\": \"/images/default_profile_image.jpg\"\n        },\n        {\n            \"_id\": \"6196620a6c117dac037ccb03\",\n            \"username\": \"developer\",\n            \"profileImage\": \"/images/default_profile_image.jpg\"\n        },\n        {\n            \"_id\": \"619662506c117dac037ccb06\",\n            \"username\": \"naver_connect_official\",\n            \"profileImage\": \"/images/default_profile_image.jpg\"\n        },\n        {\n            \"_id\": \"6196947e85cd9fec558bb672\",\n            \"username\": \"1231\",\n            \"profileImage\": \"/images/default_profile_image.jpg\"\n        },\n        {\n            \"_id\": \"6194d259dd93761039d5666f\",\n            \"username\": \"beomseok\",\n            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/Sk5wcHvx9-ywPmwMhScv-.jpg\"\n        },\n        {\n            \"_id\": \"6196281785cd9fec558b5d1a\",\n            \"username\": \"admin\",\n            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/ZjGsFMLTvibUnvqAuiJJ2.png\"\n        },\n        {\n            \"_id\": \"619662466c117dac037ccb05\",\n            \"username\": \"kakao_official\",\n            \"profileImage\": \"/images/default_profile_image.jpg\"\n        },\n        {\n            \"_id\": \"619662e16c117dac037ccb11\",\n            \"username\": \"bill_gates\",\n            \"profileImage\": \"/images/default_profile_image.jpg\"\n        },\n        {\n            \"_id\": \"619662396c117dac037ccb04\",\n            \"username\": \"naver_official\",\n            \"profileImage\": \"/images/default_profile_image.jpg\"\n        },\n        {\n            \"_id\": \"619662b26c117dac037ccb0f\",\n            \"username\": \"cocoo_official\",\n            \"profileImage\": \"/images/default_profile_image.jpg\"\n        }\n    ]\n}"}],"_postman_id":"16e52f6b-3f62-4030-8238-8f4834f838ac"},{"name":"타임라인 팔로우 게시글 보기","id":"a216e4bd-2bfb-43d5-934f-74be95fe12f8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/posts?user_id=1","urlObject":{"path":["v1","posts"],"host":["http://localhost:3001"],"query":[{"description":{"content":"<p>유저 고유 식별자</p>\n","type":"text/plain"},"key":"user_id","value":"1"}],"variable":[]}},"response":[],"_postman_id":"a216e4bd-2bfb-43d5-934f-74be95fe12f8"},{"name":"타임라인 미리보기 공식계정, 실시간 인기글","id":"fd1b18e2-1fc1-4b7e-9cc0-6ddc22fd34d1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/posts/samples?user_id=1","urlObject":{"path":["v1","posts","samples"],"host":["http://localhost:3001"],"query":[{"description":{"content":"<p>유저 고유 식별자</p>\n","type":"text/plain"},"key":"user_id","value":"1"}],"variable":[]}},"response":[],"_postman_id":"fd1b18e2-1fc1-4b7e-9cc0-6ddc22fd34d1"}],"id":"393dcadd-2f92-4ce4-8322-99664d8d3d06","_postman_id":"393dcadd-2f92-4ce4-8322-99664d8d3d06","description":""},{"name":"프로필","item":[{"name":"프로필 보기","id":"14fe8689-49a6-4aff-8b18-d36537ec71e1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/users?username=COCOO","urlObject":{"path":["v1","users"],"host":["http://localhost:3001"],"query":[{"key":"username","value":"COCOO"}],"variable":[]}},"response":[{"id":"d0f0c7c4-bbe3-4c1f-8daa-532e4b2b7ed0","name":"프로필 보기","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/users?username=testUser","host":["http://localhost:3001"],"path":["v1","users"],"query":[{"key":"username","value":"testUser"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"_id\": \"6189fe77e0b6fb7c282d505f\",\n    \"username\": \"TESTUSERNAME\",\n    \"isRegistered\": true,\n    \"name\": \"\",\n    \"bio\": \"나는 김동민입니다.\",\n    \"postCount\": 1,\n    \"followCount\": 1,\n    \"followerCount\": 1\n}"}],"_postman_id":"14fe8689-49a6-4aff-8b18-d36537ec71e1"},{"name":"팔로우 하기","id":"09cc807a-f4f7-4161-8c40-4b331e1c06a9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"userID\": \"6189fe77e0b6fb7c282d505f\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/users/:user_id/follows","description":"<h2 id=\"특정-사용자에-대하여-팔로우-추가-api\">특정 사용자에 대하여 팔로우 추가 API</h2>\n<h4 id=\"request\">request</h4>\n<ul>\n<li>userID: String (user id)</li>\n</ul>\n<h4 id=\"response\">response</h4>\n","urlObject":{"path":["v1","users",":user_id","follows"],"host":["http://localhost:3001"],"query":[],"variable":[{"description":{"content":"<p>팔로우 대상 유저 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"6194d078928b431f065e0997","key":"user_id"}]}},"response":[{"id":"d12249e3-d2fb-4841-84e8-be3e22ed63a2","name":"팔로우 하기","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"userID\": \"String (user id)\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:3001/v1/users/:user_id/follows","host":["http://localhost:3001"],"path":["v1","users",":user_id","follows"],"variable":[{"key":"user_id","value":"1","description":"팔로우 대상 유저 고유 식별자"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\"\n}"}],"_postman_id":"09cc807a-f4f7-4161-8c40-4b331e1c06a9"},{"name":"팔로우 보기","id":"40792ae8-ef3e-4488-92ef-5e2005130c61","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/users/:user_id/follows","description":"<h2 id=\"특정-사용자의-팔로우들의-리스트를-요청하는-api\">특정 사용자의 팔로우들의 리스트를 요청하는 API</h2>\n<h4 id=\"request\">request</h4>\n<h4 id=\"response\">response</h4>\n<ul>\n<li>Object[]<ul>\n<li>userID: String (user id)</li>\n<li>image: String (url)</li>\n<li>username: String</li>\n</ul>\n</li>\n</ul>\n","urlObject":{"path":["v1","users",":user_id","follows"],"host":["http://localhost:3001"],"query":[],"variable":[{"description":{"content":"<p>유저 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"6189fe77e0b6fb7c282d505f","key":"user_id"}]}},"response":[{"id":"97e2faf8-9f8b-4463-80c7-776d12aa6b5a","name":"팔로우 보기","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/users/:user_id/follows","host":["http://localhost:3001"],"path":["v1","users",":user_id","follows"],"variable":[{"key":"user_id","value":"1","description":"유저 고유 식별자"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"[\n    {\n        \"_id\": \"618a30893f3e360fa260e046\",\n        \"username\": \"hyunmindev\",\n        \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/h7lYcpyxF_RWNaiaxp9lk.png\"\n    }\n]"}],"_postman_id":"40792ae8-ef3e-4488-92ef-5e2005130c61"},{"name":"팔로워 보기","id":"8d26851a-3a04-43de-a1bd-db74218e9b84","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/users/:user_id/followers","description":"<h2 id=\"특정-사용자의-팔로워들의-리스트를-요청하는-api\">특정 사용자의 팔로워들의 리스트를 요청하는 API</h2>\n<h4 id=\"request\">request</h4>\n<h4 id=\"response\">response</h4>\n<ul>\n<li>Object[]<ul>\n<li>userID: String (user id)</li>\n<li>image: String (url)</li>\n<li>username: String</li>\n</ul>\n</li>\n</ul>\n","urlObject":{"path":["v1","users",":user_id","followers"],"host":["http://localhost:3001"],"query":[],"variable":[{"type":"any","value":"6189fe77e0b6fb7c282d505f","key":"user_id"}]}},"response":[{"id":"eedb65e8-f762-455d-86e4-454999505df6","name":"팔로워 보기","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/users/:user_id/followers","host":["http://localhost:3001"],"path":["v1","users",":user_id","followers"],"variable":[{"key":"user_id","value":"618a191bd6a74ab0da820475"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"[\n    {\n        \"_id\": \"6189fe77e0b6fb7c282d505f\",\n        \"username\": \"urlSafeUsername\"\n    }\n]"}],"_postman_id":"8d26851a-3a04-43de-a1bd-db74218e9b84"},{"name":"팔로우 취소","id":"34361af4-7faa-4c17-bb8e-caa773fdda39","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"DELETE","header":[{"key":"","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"userID\": \"6189fe77e0b6fb7c282d505f\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/users/:user_id/follows","urlObject":{"path":["v1","users",":user_id","follows"],"host":["http://localhost:3001"],"query":[],"variable":[{"type":"any","value":"618a30893f3e360fa260e046","key":"user_id"}]}},"response":[{"id":"d9d0a1a1-5ee4-45cd-84d1-dccda1c4027c","name":"팔로우 취소","originalRequest":{"method":"DELETE","header":[],"url":"http://localhost:3001/v1/users/618a191bd6a74ab0da820475/follows"},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\"\n}"}],"_postman_id":"34361af4-7faa-4c17-bb8e-caa773fdda39"},{"name":"사용자 포스트 모아보기","id":"32b2da00-2819-4e1a-8436-27099f0c1af0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/users/:user_id/posts","urlObject":{"path":["v1","users",":user_id","posts"],"host":["http://localhost:3001"],"query":[],"variable":[{"type":"any","value":"6189fe77e0b6fb7c282d505f","key":"user_id"}]}},"response":[{"id":"c5080e63-3d5c-4d47-9efd-9efbe8e63523","name":"사용자 포스트 모아보기","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/users/:user_id/posts","host":["http://localhost:3001"],"path":["v1","users",":user_id","posts"],"variable":[{"key":"user_id","value":"6189fe77e0b6fb7c282d505f"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"[\n    {\n        \"_id\": \"61911c3143b916f2475ee251\",\n        \"title\": \"스키마 변경\",\n        \"content\": \"스키마 변경 완료\",\n        \"tags\": [],\n        \"link\": \"http://www.test.com\",\n        \"createdAt\": \"2021-11-14T14:24:49.676Z\",\n        \"updatedAt\": \"2021-11-14T14:24:49.676Z\",\n        \"user\": {\n            \"_id\": \"6189fe77e0b6fb7c282d505f\",\n            \"username\": \"TESTUSERNAME\"\n        },\n        \"comments\": [\n            {\n                \"_id\": \"6191272f5fedee8f3818b3f1\",\n                \"content\": \"스키마 변경 댓글 추가 두번째 입니다.\",\n                \"createdAt\": \"2021-11-14T15:11:43.197Z\",\n                \"updatedAt\": \"2021-11-14T15:11:43.197Z\",\n                \"user\": {\n                    \"_id\": \"6189fe77e0b6fb7c282d505f\",\n                    \"username\": \"TESTUSERNAME\"\n                },\n                \"likes\": []\n            }\n        ],\n        \"likes\": [],\n        \"images\": []\n    }\n]"}],"_postman_id":"32b2da00-2819-4e1a-8436-27099f0c1af0"}],"id":"f61333bf-14a5-414d-b61d-754e2a186083","_postman_id":"f61333bf-14a5-414d-b61d-754e2a186083","description":""},{"name":"대쉬보드","item":[{"name":"대시보드 히스토리 입력","id":"1a005180-2805-49b0-9139-b9645932372b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"content\": \"졸업\",\n    \"date\": \"2017-01\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/users/:user_id/dashboard/histories","urlObject":{"path":["v1","users",":user_id","dashboard","histories"],"host":["http://localhost:3001"],"query":[],"variable":[{"type":"any","value":"6194d078928b431f065e0997","key":"user_id"}]}},"response":[],"_postman_id":"1a005180-2805-49b0-9139-b9645932372b"},{"name":"대쉬보드 기본정보 가져오기","id":"8bf2a470-f980-4733-9aa7-ba118ec23e73","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[],"url":"http://localhost:3001/v1/users/dashboard?username=username","urlObject":{"path":["v1","users","dashboard"],"host":["http://localhost:3001"],"query":[{"key":"username","value":"username"}],"variable":[]}},"response":[],"_postman_id":"8bf2a470-f980-4733-9aa7-ba118ec23e73"},{"name":"대쉬보드 기본정보 업데이트","id":"cc6c3d72-7747-4036-8051-106d592b9c02","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"김동민\",\n    \"phoneNumber\": \"010-3400-1897\",\n    \"school\": \"건국대학교\",\n    \"region\": \"경기도 성남시 분당구\",\n    \"birthday\": \"1999-02-11\",\n    \"email\": \"kdmin0211@gmail.com\",\n    \"github\": \"https://github.com/dmin0211\",\n    \"blog\": \"https://bllog.dongmin.dev\",\n    \"jobObjects\": [\n        \"백엔드\",\n        \"프론트엔드\"\n    ],\n    \"techStacks\": {\n        \"프론트엔드\": [\n            {\n                \"_id\": \"619b9bb834b70122c105f350\",\n                \"techStack\": \"JavaScript\",\n                \"color\": \"#EFD81E\"\n            },\n            {\n                \"_id\": \"619b9bb834b70122c105f351\",\n                \"techStack\": \"Python\",\n                \"color\": \"#254F73\"\n            }\n        ],\n        \"백엔드\": [\n            {\n                \"_id\": \"619b9bb834b70122c105f352\",\n                \"techStack\": \"HTML\",\n                \"color\": \"#D23B13\"\n            },\n            {\n                \"_id\": \"619b9bb834b70122c105f353\",\n                \"techStack\": \"React\",\n                \"color\": \"#5ED3F3\"\n            }\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/users/:user_id/dashboard","urlObject":{"path":["v1","users",":user_id","dashboard"],"host":["http://localhost:3001"],"query":[],"variable":[{"type":"any","value":"6194d078928b431f065e0997","key":"user_id"}]}},"response":[],"_postman_id":"cc6c3d72-7747-4036-8051-106d592b9c02"},{"name":"대시보드 히스토리 삭제","id":"41019ddc-4445-4756-9dce-cc86e5de1122","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n    \"historyID\": \"61990a80890494def1e2cf0c\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/users/:user_id/dashboard/histories","urlObject":{"path":["v1","users",":user_id","dashboard","histories"],"host":["http://localhost:3001"],"query":[],"variable":[{"id":"6279b663-654b-4179-adf6-596b5f1d58c6","type":"any","value":"6194d078928b431f065e0997","key":"user_id"}]}},"response":[{"id":"2343ee44-ca49-4711-af16-f97f62e31f59","name":"대시보드 히스토리 삭제","originalRequest":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n    \"historyID\": \"61990a80890494def1e2cf0c\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:3001/v1/users/:user_id/dashboard/histories","host":["http://localhost:3001"],"path":["v1","users",":user_id","dashboard","histories"],"variable":[{"key":"user_id","value":"6194d078928b431f065e0997"}]}},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\"\n}"}],"_postman_id":"41019ddc-4445-4756-9dce-cc86e5de1122"},{"name":"Solved.ac 통계정보","id":"9874a6e5-516d-4bf5-a2e1-670baf35d6f8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"PUT","header":[],"url":"http://localhost:3001/v1/users/:user_id/dashboard/problems/:solved_username/statistics","urlObject":{"path":["v1","users",":user_id","dashboard","problems",":solved_username","statistics"],"host":["http://localhost:3001"],"query":[],"variable":[{"type":"any","value":"6194d078928b431f065e0997","key":"user_id"},{"type":"any","value":"pig1897","key":"solved_username"}]}},"response":[],"_postman_id":"9874a6e5-516d-4bf5-a2e1-670baf35d6f8"},{"name":"사용자 통계정보 가져오기","id":"6bc7c59e-3125-40fe-a6c9-64cdb9e44ac0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"urlObject":{"query":[],"variable":[]},"url":""},"response":[],"_postman_id":"6bc7c59e-3125-40fe-a6c9-64cdb9e44ac0"}],"id":"7d28ce30-a402-43b7-aef6-563f5dd6e151","_postman_id":"7d28ce30-a402-43b7-aef6-563f5dd6e151","description":""},{"name":"설정 페이지","item":[{"name":"설정 페이지 보기","id":"e5b52178-9642-4994-8f56-c56f3edca370","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[],"url":"http://localhost:3001/v1/users/:user_id/settings","urlObject":{"path":["v1","users",":user_id","settings"],"host":["http://localhost:3001"],"query":[],"variable":[{"description":{"content":"<p>유저 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"6189fe77e0b6fb7c282d505f","key":"user_id"}]}},"response":[{"id":"5217eaf4-fed0-4909-a90b-7704fd9dbf97","name":"설정 페이지 보기","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:3001/v1/users/:user_id/settings","host":["http://localhost:3001"],"path":["v1","users",":user_id","settings"],"variable":[{"key":"user_id","value":"6189fe77e0b6fb7c282d505f","description":"유저 고유 식별자"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"profileImage\": \"/images/default_profile_image.jpg\",\n    \"_id\": \"6189fe77e0b6fb7c282d505f\",\n    \"username\": \"TESTUSERNAME\",\n    \"authProvider\": \"google\",\n    \"languages\": [\n        \"6189329e409d8a9e2a3723f0\"\n    ],\n    \"createdAt\": \"2021-11-09T04:52:07.771Z\",\n    \"updatedAt\": \"2021-11-11T10:26:52.676Z\",\n    \"birthday\": \"2020-10-10T00:00:00.000Z\",\n    \"name\": \"\",\n    \"company\": \"\",\n    \"region\": \"\",\n    \"school\": \"\",\n    \"sex\": \"male\",\n    \"tistoryURL\": \"https://dongmin-tech.tistory.com\",\n    \"bio\": \"나는 김동민입니다.\",\n    \"lastVisitedAt\": \"2021-11-14T15:14:13.768Z\"\n}"}],"_postman_id":"e5b52178-9642-4994-8f56-c56f3edca370"},{"name":"설정 페이지 수정","id":"0980ed31-8b17-4d38-8ab4-cace7b7f3e81","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"\",\n    \"username\": \"COCOO\",\n    \"school\": \"\",\n    \"company\": \"\",\n    \"sex\": \"male\",\n    \"birthday\": \"2020-10-10\",\n    \"region\": \"\",\n    \"languages\": [\"6189329e409d8a9e2a3723f0\"]\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3001/v1/users/:user_id/settings","urlObject":{"path":["v1","users",":user_id","settings"],"host":["http://localhost:3001"],"query":[],"variable":[{"description":{"content":"<p>유저 고유 식별자</p>\n","type":"text/plain"},"type":"any","value":"6189fe77e0b6fb7c282d505f","key":"user_id"}]}},"response":[{"id":"783850a5-526b-4c28-94d0-4d3e1e3d78b1","name":"설정 페이지 수정","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"\",\n    \"username\": \"urlSafeUsername\",\n    \"school\": \"\",\n    \"company\": \"\",\n    \"sex\": \"male\",\n    \"birthday\": \"2020-10-10\",\n    \"region\": \"\",\n    \"languages\": [\"6189329e409d8a9e2a3723f0\"]\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:3001/v1/users/:user_id/settings","host":["http://localhost:3001"],"path":["v1","users",":user_id","settings"],"variable":[{"key":"user_id","value":"6189fe77e0b6fb7c282d505f","description":"유저 고유 식별자"}]}},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"Success\"\n}"}],"_postman_id":"0980ed31-8b17-4d38-8ab4-cace7b7f3e81"}],"id":"df1881f1-c59b-467a-98de-8e4760c3d5a1","_postman_id":"df1881f1-c59b-467a-98de-8e4760c3d5a1","description":""},{"name":"랜덤 페이지","item":[{"name":"랜덤 페이지","id":"833649f1-d84c-4666-b447-9e1c2d7bc3d1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3001/v1/posts/random","urlObject":{"path":["v1","posts","random"],"host":["http://localhost:3001"],"query":[],"variable":[]}},"response":[{"id":"3389daae-385b-4fce-bc10-299f3867ebc9","name":"랜덤 페이지","originalRequest":{"method":"GET","header":[],"url":"http://localhost:3001/v1/posts/random"},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"[\n    {\n        \"_id\": \"61911c3143b916f2475ee251\",\n        \"title\": \"스키마 변경\",\n        \"content\": \"스키마 변경 완료\",\n        \"tags\": [],\n        \"link\": \"http://www.test.com\",\n        \"createdAt\": \"2021-11-14T14:24:49.676Z\",\n        \"updatedAt\": \"2021-11-14T14:24:49.676Z\",\n        \"user\": {\n            \"_id\": \"6189fe77e0b6fb7c282d505f\",\n            \"username\": \"COCOO\"\n        },\n        \"comments\": [\n            {\n                \"_id\": \"6191272f5fedee8f3818b3f1\",\n                \"content\": \"스키마 변경 댓글 추가 두번째 입니다.\",\n                \"createdAt\": \"2021-11-14T15:11:43.197Z\",\n                \"updatedAt\": \"2021-11-14T15:11:43.197Z\",\n                \"user\": {\n                    \"_id\": \"6189fe77e0b6fb7c282d505f\",\n                    \"username\": \"COCOO\"\n                },\n                \"likes\": []\n            }\n        ],\n        \"likes\": [],\n        \"images\": []\n    },\n    {\n        \"_id\": \"61911b765b2b5d35685ada95\",\n        \"content\": \"한범석 바보바보 바보 입니다. beomseck is sexy boy. 한범석 바보바보 바보 입니다. beomseck is sexy boy. 한범석 바보바보 바보 입니다. beomseck is sexy boy. 한범석 바보바보 바보 입니다. beomseck is sexy boy. 한범석 바보바보 바보 입니다. beomseck is sexy boy. 한범석 바보바보 바보 입니다. beomseck is sexy boy. 한범석 바보바보 바보 입니다. beomseck is sexy boy. 한범석 바보바보 바보 입니다. beomseck is sexy boy. 한범석 바보바보 바보 입니다. beomseck is sexy boy.\",\n        \"tags\": [],\n        \"createdAt\": \"2021-11-14T14:21:42.749Z\",\n        \"updatedAt\": \"2021-11-14T14:21:42.749Z\",\n        \"user\": {\n            \"_id\": \"618a30893f3e360fa260e046\",\n            \"username\": \"hyunmindev\",\n            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/h7lYcpyxF_RWNaiaxp9lk.png\"\n        },\n        \"comments\": [],\n        \"likes\": [],\n        \"images\": []\n    },\n    {\n        \"_id\": \"619116a65b2b5d35685ad95d\",\n        \"content\": \"가나다라마바사가나다라마바사가나다라마바사가나다라마바사가나다라마바사가나다라마바사가나다라마바사가나다라마바사가나다라마바사가나다라마바사가나다라마바사가나다라마바사가나다라마바사가나다라마바사가나다라마바사가나다라마바사가나다라마바사가나다라마바사가나다라마바사가나다라마바사가나다라마바사가나다라마바사가나다라마바사가나다라마바사가나다라마바사\",\n        \"tags\": [],\n        \"createdAt\": \"2021-11-14T14:01:10.508Z\",\n        \"updatedAt\": \"2021-11-14T14:01:10.508Z\",\n        \"user\": {\n            \"_id\": \"618a30893f3e360fa260e046\",\n            \"username\": \"hyunmindev\",\n            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/h7lYcpyxF_RWNaiaxp9lk.png\"\n        },\n        \"comments\": [],\n        \"likes\": [],\n        \"images\": []\n    },\n    {\n        \"_id\": \"618d162d83e5437cfdc723ef\",\n        \"content\": \"냐옹이\",\n        \"tags\": [],\n        \"createdAt\": \"2021-11-11T13:10:05.050Z\",\n        \"updatedAt\": \"2021-11-11T13:10:05.050Z\",\n        \"user\": {\n            \"_id\": \"618d14e3f4903f6f44806c95\",\n            \"username\": \"yjh9360\",\n            \"profileImage\": \"/images/default_profile_image.jpg\"\n        },\n        \"comments\": [],\n        \"likes\": [],\n        \"images\": []\n    },\n    {\n        \"_id\": \"618d0ec0478040ae2d74a512\",\n        \"content\": \"콘텐트 안적었다 미안\",\n        \"tags\": [],\n        \"createdAt\": \"2021-11-11T12:38:24.656Z\",\n        \"updatedAt\": \"2021-11-11T12:38:24.656Z\",\n        \"user\": {\n            \"_id\": \"618a30893f3e360fa260e046\",\n            \"username\": \"hyunmindev\",\n            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/h7lYcpyxF_RWNaiaxp9lk.png\"\n        },\n        \"comments\": [],\n        \"likes\": [],\n        \"images\": []\n    },\n    {\n        \"_id\": \"618cc4e7d513946b840de825\",\n        \"title\": \"테스트 타이틀1\",\n        \"content\": \"테스트 내용\",\n        \"tags\": [],\n        \"createdAt\": \"2021-11-11T07:23:19.574Z\",\n        \"updatedAt\": \"2021-11-11T07:23:19.574Z\",\n        \"user\": {\n            \"_id\": \"618a30893f3e360fa260e046\",\n            \"username\": \"hyunmindev\",\n            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/h7lYcpyxF_RWNaiaxp9lk.png\"\n        },\n        \"comments\": [],\n        \"likes\": [],\n        \"images\": []\n    },\n    {\n        \"_id\": \"618c88d75380c95b11836b76\",\n        \"content\": \"ㅆ\",\n        \"tags\": [],\n        \"createdAt\": \"2021-11-11T03:07:03.289Z\",\n        \"updatedAt\": \"2021-11-11T03:07:03.289Z\",\n        \"user\": {\n            \"_id\": \"618a30893f3e360fa260e046\",\n            \"username\": \"hyunmindev\",\n            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/h7lYcpyxF_RWNaiaxp9lk.png\"\n        },\n        \"comments\": [],\n        \"likes\": [],\n        \"images\": []\n    },\n    {\n        \"_id\": \"618bde5402dd53ca3cb0b52f\",\n        \"content\": \"시ㅂ\",\n        \"tags\": [],\n        \"createdAt\": \"2021-11-10T14:59:32.402Z\",\n        \"updatedAt\": \"2021-11-13T01:25:29.100Z\",\n        \"user\": {\n            \"_id\": \"618a30893f3e360fa260e046\",\n            \"username\": \"hyunmindev\",\n            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/h7lYcpyxF_RWNaiaxp9lk.png\"\n        },\n        \"comments\": [],\n        \"likes\": [],\n        \"images\": []\n    },\n    {\n        \"_id\": \"618bac03995e8a7a0c915cb8\",\n        \"content\": \"가나다라\",\n        \"tags\": [],\n        \"createdAt\": \"2021-11-10T11:24:51.119Z\",\n        \"updatedAt\": \"2021-11-14T15:08:06.769Z\",\n        \"user\": {\n            \"_id\": \"618a30893f3e360fa260e046\",\n            \"username\": \"hyunmindev\",\n            \"profileImage\": \"https://kr.object.ncloudstorage.com/cocoo/posts/h7lYcpyxF_RWNaiaxp9lk.png\"\n        },\n        \"comments\": [],\n        \"likes\": [],\n        \"images\": []\n    }\n]"}],"_postman_id":"833649f1-d84c-4666-b447-9e1c2d7bc3d1"}],"id":"74d86ac5-6800-4f0e-ac85-4c3d079c7399","_postman_id":"74d86ac5-6800-4f0e-ac85-4c3d079c7399","description":""}],"id":"6047d0b2-a5db-489f-b805-b4d358163d82","_postman_id":"6047d0b2-a5db-489f-b805-b4d358163d82","description":""}],"event":[{"listen":"prerequest","script":{"id":"8c48ba9b-01e8-4ad4-93f6-52a0611a7d62","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"783ebcab-378c-4a88-b052-7ee3bb8e6af5","type":"text/javascript","exec":[""]}}],"variable":[{"key":"version","value":"v1"},{"key":"host","value":"http://localhost:3001"},{"key":"userID","value":"1"},{"key":"local_host","value":"http://localhost:3001"}]}