묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결
API 파이썬 connection error 발생 , 클라이언트 인증서 , CA인증서, 클라이언트 개인키 관련 옵션 코드 작성
파이썬으로 API 호출하는 과정에서 SSL 핸드쉐이크 오류가 발생하여 관련 기관에 물어보니 아래와 같은 답변을 받았습니다. SSL 핸드쉐이크 오류가 발생한 이유는 클라이언트 인증서, CA인증서, 클라이언트 개인 키 등의 정보를 옵션으로 사용하여야 하는데 이러한 옵션들이 없어 상호 인증에 실패 하였다고 합니다. 쿼리문 으로 curl -k --tlsv1.2 --cacert ./ca-chain.crt --cert ./client.crt --key ./client.key -H 위와 같은 설정이 있어야 한다고 합니다. 맨 처음에 tlsv1.2 부분은 알아보니 파이썬에서 import ssl context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2) 구문을 추가하면 된다고 배웠습니다. 그다음 cacert ./ca-chain.crt --cert ./client.crt --key ./client.key 이 부분은 어떻게 파이썬으로 코드로 구현해야 할지 몰라서 질문을 올리게 되었습니다. 긴글읽어주셔서 감사합니다. 항상배움의 자세를 갖추어 열심히하고자합니다. 도움주시면 정말 너무감사하겠습니다.
-
미해결앱으로 수익창출! 누구나 쉽게 Android 앱 개발하고 스토어에 출시까지!
oKHttp 를 통한 API 호출 및 사용 강의는 없나요?
앱을 개발하고 출시하는데 있어 API가 필수여서 이런 질문을 드립니다.
-
미해결
스프링 부트와 JPA 활용 2 강의 듣던 중 로드맵이 궁금해서 질문남깁니다.
안녕하세요 현재 스프링 기초 강의 부터 JPA 기초, 실전 1 까지 들으며 야생형 로드맵을 따라가고 있습니다. 그런데 활용 2편 강의를 아직 초반밖에 보지 않았지만 중간중간 MVC 이야기를 하셔서 MVC 파트가 선행 되어야 하는건지 아니면 이 강의를 먼저 끝내고 들어도 되는건지 더 효율적인 학습 순서가 어떻게 되는지 알려주세요 ㅎㅎ
-
미해결
Getmapping path에 관한 질문
Path 설정시에 파라미터로 받는 것이 맞는지 경로에 추가하는 것이 맞는지 궁금합니다. Ex) 1. /file/{id} 2. /file?id= 1번과 2번 중 어떤 것이 맞는 건가요?
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
API 의미 관련 문의
안녕하세요 17:53분 '머신러닝을 위한 넘파이와 판다스의 중요성' 장표에서 사이킷런은 API 구성이 매우 간결하고 직관적 이어서.. 라는 부분이 있는데 여기서 'API'의 의미가 정확히 어떻게 될까요? 사이킷런 안에 포함된 다양한 라이브러리들을 사용하기 위한 사용규칙, 문법 정도로 이해하면 될까요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
API URL 설계와 서비스 접근제어
아래와 같이 http method는 다르지만 URL이 같은 경우, (조회 : GET /members, 등록 : POST /members) 서비스 접근제어는 보통 URL기반으로 처리하므로 등록권한을 따로 분리할 수 없고, 이럴 경우는 컨트롤 URL을 사용할 수 밖에 없을 것 같은데요. (등록: POST /members/regist) 그렇다면 실무에서는 운영 중에 권한이 생기거나 변경될 수도 있으니, 처음부터 컨트롤 URL을 적극 사용하여 API URL을 설계하는 게 맞는 것 같은데, (--> 조회 : GET /members/search, 등록 : POST /members/regist) 접근제어 처리 관점에서 API URL 설계는 어떻게 하는게 효율적일까요?
-
미해결Vue.js + TypeScript 완벽 가이드
강의 내용과는 조금 다른데 궁금한 게 있어요.
안녕하세요 판교님! 판교님 강의는 거의 모두 다 본 수강생입니다. 강의와 별개로 여쭤보고 싶은 게 있는데요! 혹시 실무하면서 API Response에 가공이 필요한 경우에는 따로 파일을 두고 관리하시나요?? 가공 폴더&파일명을 어떤식으로 두는지 궁금해서요..구글링해도 답을 못 찾아서... 여쭤봅니다 ㅠ ㅠ
-
미해결Vue.js 제대로 배워볼래?(Vue.js 프로젝트 투입 일주일 전)
페이지를 진입 할때 데이터를 불러 오고 싶습니다.
import ApiMixin from '../api.js'; export default { mixins:[ApiMixin], data(){ return { studyLists:[] }; }, mounted(){ getStudyList(); }, methods:{ async getStudyList(){ this.studyLists = await this.$callAPI( "/api/study", "get", {} ); console.log(this.studyLists); }, }, } 위와 같이 코드를 작성했는데 getStudyList is not define이라고 나오면서 오류가 발생하고 있습니다. 라이프사이클을 보면 생성 직전에 메소드를 작동하도록 해놓을 생각이였는데 보통 mounted를 먼서 실행하고 메소드를 불러 오나요? 또한 위에 사항에 대한 해결책은 어떤것들이 있을까요?
-
미해결Vue.js 끝장내기 - 실무에 필요한 모든 것
api instance 관련되서 질문드립니다.
안녕하세요. 강사님... 좋은 강의 항상 감사합니다. 다름이 아니라 강의때 배운거 실전에 써먹어보려고 합니다. 아래 코드 처럼 인터셉터에서 access토큰이 만료가 되었을때 refresh 토큰을 통해 새로은 access 토큰을 받아오거든요. 새로은 access 토큰을 세팅한 뒤에 이전에 요청했던 url을 받아서 사용자가 요청했던 화면 끊겨 보이지 않게 이동하도록 하려고 구글에서 검색해서 아래코드처럼 사용해봤습니다. 참고했던 자료에서 axios.create 구성이 비슷해서 토큰을 연장해서 다시 재요청까지는 성공합니다. response에서 데이터도 잘 받아어구요. 그런데 화면의 데이터가 변하지 않습니다. 강의의 메인화면을 페이징 처리해서 계속 불러오는건데 response에서 데이터는 받아왔지만 제대로 화면에 나타나지 않고 있는데요.. 어디부분을 더 수정을 해야할까요? 그리고 error.response.config을 axios의 newInstance를 매배변수로 받았을때 이전 url이 다시 요청되는게 왜 그러는걸까요? 원리가 궁금합니다. 답변 부탁드립니다. 감사합니다. import store from '@/store/index'; import router from '@/routes/index'; import axios from 'axios'; import { saveAuthToCookie, deleteCookie } from '@/utils/cookies'; import { instance as newInstance } from '@/api/index'; axios.defaults.withCredentials = true; export function setInterceptors(instance) { // Add a request interceptor instance.interceptors.request.use( function (config) { // Do something before request is sent // console.log(config); config.headers.Authorization = 'Bearer ' + store.state.token; return config; }, function (error) { // Do something with request error return Promise.reject(error); }, ); // Add a response interceptor instance.interceptors.response.use( function (response) { // Any status code that lie within the range of 2xx cause this function to trigger // Do something with response data return response; }, function (error) { // Any status codes that falls outside the range of 2xx cause this function to trigger // Do something with response error const originalConfig = error.response.config; console.log('originalConfig : ', originalConfig); const status = error.response.status; const message = error.response.data.message; //토큰 만료시 refreshtoken으로 토큰 연장 if (status == 401 && message == 'TokenExpiredError') { axios .post(`${process.env.VUE_APP_API_URL}auth/refreshToken`, {}) .then(function (response) { deleteCookie('til_auth'); saveAuthToCookie(response.data); store.commit('setToken', response.data); // originalConfig._retry = true; originalConfig.headers.Authorization = `Bearer ${response.data}`; return newInstance(originalConfig); }) .catch(function (error) { console.log(error.response); alert('인증이 완료되었습니다. 로그인 해주세요'); //state 삭제 // store.commit('clearUsername'); // store.commit('clearToken'); // //쿠키값 삭제 // deleteCookie('til_auth'); // deleteCookie('til_user'); //refreshtoken 만료 또는 없을때 로그인 화면으로 이동 if (error.response.status == 500) { router.push('/login'); } }); } else if (status == 403) { console.log('403 에러'); alert('권한이 없습니다.'); } return Promise.reject(error); }, ); return instance; }
-
해결됨[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
router.post질문
안녕하세요 router.post를 작성중인데 Error: Route.post() requires a callback function but got a [object Undefined] at Route.<computed> [as post] 이러한 에러가 발생했습니다 어디가 문제일까요? upload는 멀터의 미들웨어입니다 const express = require("express"); const { isLoggedIn, isNotLoggedIn, upload, upload_commit, } = require("./middlewares"); const router = express.Router(); const requestProjectController = require("../controllers/requestProjects"); router.post( "/requestProjects", isLoggedIn, upload.single("data"), requestProjectController.readMyPageAPI ); module.exports = router;
-
미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
간단한 로그인 api 적용
안녕하세요 좋은 강의 만들어주셔서 감사합니다 django 강의를 마친 후 이를 바탕으로 로그인, 회원가입, 프로필 확인, 삭제 정도 가능한 프로젝트를 새로 만들었습니다. 이를 바탕으로 강의의 profile 모델을 기반으로 한 간단한 api를 만들었고 지금 목적은 이 api를 기준으로 새로만든 django 프로젝트의 MODEL부분을 모두 api에서 관리하도록 적용하고싶은 학생입니다. 제가 만든 api의 명세서 입니다. https://documenter.getpostman.com/view/15940594/Tzm6kvP2 #accountapp/create.html {% extends 'base.html' %}{% load bootstrap4 %}{% block content %} <div style="text-align: center; max-width: 500px; margin: 4rem auto;"> <div class="mb-4"> <h4>Signup</h4> </div> <form action="{% url 'accountapp:create' %}" method="post"> {% csrf_token %} {% bootstrap_form form %} <input type="submit" class = "btn btn-dark rounded-pill col-6 mt-3"> </form> </div>{% endblock %} 에서 <form action="{% url 'accountapp:create' %}" method="post"> 이 부분의 url을 바꾸면서 class AccountCreateView(CreateView): model = User form_class = UserCreationForm success_url = reverse_lazy('profileapp:create') # reverse_lazy는 클래스형 뷰에서 reverse 는 함수형 뷰에서 template_name = 'accountapp/create.html' 이 부분을 함수형 뷰로 바꿔서 진행하려는데 위에 만든 api의 json 형식을 어떤식으로 읽고 쓰게 할 수 있는지에 대한 방법론이 궁금합니다... 참고로 rest api 서버의 스토리지는 mariadb이고 추후에는 현 django 프로젝트의 모델을 전부 삭제하고 api로만 진행할 생각입니다. 소셜 로그인과 비슷한 형태로 진행하려고 했는데 참 힘들더라구요.. 공부가 부족한 것 같습니다 ------------------------------------------ 현재 방법을 찾던 중 https://www.daleseo.com/python-json/ 위 포스트를 보고 파이썬 내장 모듈인 json 모듈을 통해 입력받는 것을 공부중에 있습니다 혹시 다른 방법이 있는지 이 방법을 사용할 경우 문제점이 무엇인지 알려주시면 감사하겠습니다 ---------------------------------------------------------------------------- #accountapp/views.pyimport json, requests# Create your views here.def web_request(method_name, url, dict_data, is_urlencoded=True): """Web GET or POST request를 호출 후 그 결과를 dict형으로 반환 """ method_name = method_name.upper() # 메소드이름을 대문자로 바꾼다 if method_name not in ('GET', 'POST'): raise Exception('method_name is GET or POST plz...') if method_name == 'GET': # GET방식인 경우 response = requests.get(url=url, params=dict_data) elif method_name == 'POST': # POST방식인 경우 if is_urlencoded is True: response = requests.post(url=url, data=dict_data, headers={'Content-Type': 'application/x-www-form-urlencoded'}) else: response = requests.post(url=url, data=json.dumps(dict_data), headers={'Content-Type': 'application/json'}) dict_meta = {'status_code': response.status_code, 'ok': response.ok, 'encoding': response.encoding, 'Content-Type': response.headers['Content-Type']} if 'json' in str(response.headers['Content-Type']): # JSON 형태인 경우 return {**dict_meta, **response.json()} else: # 문자열 형태인 경우 return {**dict_meta, **{'text': response.text}} python에서 http메소드의 post와 get을 사용할 수 있는 함수를 views.py 에 추가해주고 def signup(request): if request.method == 'POST': print('리퀘스트 로그' + str(request.body)) username = request.POST.get('userid', '') password = request.POST.get('userpw', '') pw2 = request.POST.get('userpw2', '') print(username, password, pw2) if password == pw2: json_signup = {} json_signup["username"] = username json_signup["password"] = password url = 'http://APIhost:port/register/' # 접속할 사이트주소 또는 IP주소를 입력한다 data = json_signup # 요청할 데이터 # (example) data = {"username":"test123","password":"testword123"} print(data) response = web_request(method_name='POST', url=url, dict_data=data) return HttpResponse('success') return render(request, "accounts/signup.html") 탬플릿의 http에서 따온 변수 userid, userpw를 따와서 파이썬 내장 모듈인 json을 통해서 json파일을 만들고 data 변수에 입력하고 위에서 만든 함수를 통해 api에 json 으로 POST 요청을 보내는 함수를 디자인하여 해결했습니다. 위 처럼 json을 통해 로그인과 패스워드를 api 서버와 주고받는다면 보안적으로 이슈가 될 만한 사항이 있을까요? -----------------------------------
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
id 값 문제인데 해결을 못하겠습니다.
local host 로 들어가서 축구공위에 마우스를 올리면 아래 products/0 으로 나옵니다.. 물론 클린하면 아무데이터도 나오지 않고 2번쨰 그림을 클릭하면 1번째 상세 정보가 표출됩니다. db값은 id:1 2 3 으로 되어 있으나, localhost 상에는 0, 1, 2 로 표기되있는듯 합니다. 왜 값을 일치 시키지 못하는지 강의를 다시 보면서 문제를 찾아봐도 잘 해결이 되지 않습니다. ㅠ 아직 이해가 많이 부족한듯 합니다. 설명 부탁드립니다. <Switch> <Route exact={true} path={"/"}> <MainPageComponent/> </Route> <Route exact={true} path="/products/:id"> <ProductPage/> </Route> <Route exact={true} path="/upload"> <UploadPage/> </Route> </Switch> app.get("/products/:id", (req,res)=>{ const params = req.params; const {id} = params; models.Product.findOne({ where : { id:id, }, }).then((result)=>{ console.log("PRODUCT : ", result); res.send({ product : result }); }).catch((error)=>{ console.error(error); res.send("상품 조회에 에러가 발생했습니다."); }); }); 그리고... 해당 강의 전의 SQLite 데이터 순서와 현재강의의 데이터 순서가 선생님은 바뀌었는데... 저는 그렇지 않습니다.. ㅠㅠ 이것까지만의 드립니다. app.get("/products", (req, res) => { models.Product.findAll({ order: [["createdAt", "DESC"]], attributes:[ 'id', 'name', 'price', 'createdAt','seller','imageUrl' ], }) .then((result)=>{ console.log("PRODUCTS : ", result); res.send({ products : result }); }).catch((error)=>{ console.error(error); res.send("에러 발생"); }) });
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
HTTP API에서의 파일 전송에 대해 궁금한 것이 있습니다.
JSON 요청-응답을 통한 조작을 하는 서버를 개발하고 싶은데, 회원 프로필같이 사진파일을 전송해야 하는 경우가 생기는데 이러한 부분을 어떻게 처리하는 것이 좋을지 모르겠습니다. 예를 들어 저는 Vue와 같은 프레임워크에 axios로 ajax 요청을 보내서 multipart/form-data 형식으로 파일을 보내고 싶은데 이렇게 보낸 요청에 대한 결과를 JSON으로 받아도 괜찮고, 가능한건가요?? 또 반대로 프로필 사진을 받는 요청을 한다고 가정했을때, 일반적으로 JSON으로 통신하는 API서버로 구축을 했을 때 파일은 어떤 방식으로 내려받아야 되는건지 궁금합니다. 파일을 받는 메커니즘이 따로 있는건가요?? 가장 헷갈리는 부분은 HTTP API로 구현했을때의 파일전송 관련한 부분입니다.
-
해결됨[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
API란
안녕하세요 선생님! 웹 백엔드 개발자를 희망하는 대학생입니다. 선생님의 강의를 들으며 api를 설계하고 있는데 궁금증이 생겼습니다. 이전 까지 학습했던 spring 기반 웹 공부는 사용자의 요청에 따라 SSR를 통해 view를 응답해주는 것으로 알고 있는데 api는 uri와 http 메소드를 통해 json으로 응답해주는 것으로 알고 있습니다. 궁금한 점은, 프로그래머가 아닌 일반 사용자가 view 에서가 아닌 api를 통해 json 형식으로 회원가입, 조회를 하지 않는거 같은데 api는 언제 쓰이는지 궁금합니다. 단순 개발자의 편의를 위해? 너무 두서가 없네요ㅠㅠ 아직 api의 감이 안잡혀서 그런거같습니다.. 본질적으로 왜 쓰이는지에 대해서 인지를 하고 학습을 하면 더 유용할 것 같습니다. 감사합니다^^
-
해결됨[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
모바일API 서버 질문이 있습니다.
이미 만들어진 웹사이트가 있는데 그사이트를 웹뷰로 안띄우고 네이티브 앱으로 만들려면 따로 API 서버 만들어야하는건가요?
-
미해결Vue.js 제대로 배워볼래?(Vue.js 프로젝트 투입 일주일 전)
post API오류 질문드리요
-
미해결
flutter 구글 map api 오류 해결부탁드립니다...
아래와 같은 오류 메세지가 뜨고 에뮬레이터에는 저렇게 하얀화면만 뜨네요 API 문제는 진작에 해결해서 API 문제는 아닌거 같은데 어떻게 해야할까요? 답변 부탁드립니다ㅜㅜㅜ
-
미해결IT 회사에서 비개발자가 살아남기 위한 모든 개발 지식 A to Z
URL 구조 관련 궁금한 게 있습니다
안녕하세요 "(추가) URL 구조" 부분 강의를 듣다가 확인하고 싶은 게 있었습니다! 예를 들면, https://cloud.google.com/speech-to-text?hl=ko 여기서 https는 프로토콜, cloud.google.com은 호스트(:포트 생략), speech-to-text는 (해당 서버의) 경로, hl=ko는 쿼리라는 것을 알게 되었습니다. 그럼 여기서 request의 headers와 body에 해당하는 부분은 알 수 없는걸까요? 기획하던 중에 외부 API 데이터(JSON형식)를 확인해야 하는데 정보를 어떻게 요청하고 받는 것인지 잘 몰라서, URL인지 URI인지 알아야 할 것 같아서 그랩님 강의를 다시 복습하고 있었는데 여전히 헷갈립니다 ㅠㅠ
-
미해결실전! 스프링 데이터 JPA
김영한 개발자님의 조언을 구하고 싶습니다
Q. 질문은 api uri 를 만드는 규칙에 관련된 것입니다. 여러 회사가 있을 때 "회사에 소속된 팀 조회" & "회사에 소속된 사원 조회" 를 하는 api를 만들 경우 아래에 있는 두 가지 방법 중 어떤 것이 옳을까요? 1. /회사/{id}/팀 /회사/{id}/멤버 2. /팀?회사id=1 /멤버?회사id=1 **제 생각 저는 1번이 맞다고 생각했으나, 더많은 정보가 있을 때 /회사/{id}/장비 /팀/{id}/멤버 등 api 개수가 너무 많아지는 문제가 있다고 생각되었습니다. 2번의 경우도 더많은 정보를 고려하면 /멤버?회사id=1&팀id=2&성별=남 하나의 uri가 너무 많은 기능을 담당하게 되는 문제가 있다고 생각되었습니다. 신입 개발자로써 많은 고민을 했지만 결론이 나오지 않아서 이름있는 선배 개발자님과 소통할 수 있는 유일한 창구가 인프런이기에 부득이하게 질문하게 되었습니다 ㅠㅠ.. 답변 해주시면 정말 감사하겠습니다.
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
HTTP API 설계 질문
안녕하세요. 좋은 강의 감사드립니다. HTTP API 설계와 관련하여 궁금한 점 질문 드리고자 합니다. 1. /members/{id} 와 같은 API URL에서 {id}에는 특정 회원을 식별할 수 있는 값, 주로 회원 테이블의 PK 값이 들어간다고 생각하면 될까요? 2. 만약 그렇다면 API 설계 시 URL에 PK 값을 노출시키는 것은 보안 상으로 문제가 되지 않는 것인가요? 3. 만약 회원 테이블의 PK가 id, email이라면(즉 특정 회원을 식별하기 위해서 id, email 두 개의 값이 필요하다면) /members/{id}/email/{email} 이런 식으로 설계해야 할까요? 실제 현업에서는 어떤 방식으로 하시는지 궁금해 여쭤봅니다. 감사합니다.