ππ₯π₯ λΌμΌλ¦¬μ μ½λ λΆμ€λ¬κΈ° ππ₯π₯
νμ΄μ¬μ λ³μμ κ°μ²΄ C μ κ°μ μΈμ΄μμ λ³μλ λ©λͺ¨λ¦¬ μ μ μ₯곡κ°μ μ§μ κ°μ ν λΉνλ€λ©΄, νμ΄μ¬μμ λ³μλ λ©λͺ¨λ¦¬μμ μμ±λ κ°μ²΄λ₯Ό μ°Έμ‘° νλ κ°λ
μ΄λ€.
1 2 3 4 5 6 7 8 9 10 >>> x = 100 >>> y = 100 >>> x is y True # 257 λΆν°λ μλ‘ λ€λ₯Έ κ°μ²΄λ‘ μμ±λ¨. >>> x = 257 >>> y = 257 >>> x is y False μμ μμ μμλ x μ y λ 100 μ΄λΌλ λ©λͺ¨λ¦¬μ κ°μ κ°μ²΄λ₯Ό κ°λ¦¬ν€κ³ μλ€.
pyenv? pyenv λ νλμ μμ€ν
μμ μ¬λ¬ λ€μν λ²μ μ Python μ κ΄λ¦¬νκΈ° μν κ΄λ¦¬ λꡬμ΄λ€. νμ΄μ¬ λ²μ μ μ¬μ©μ λ¨μ νΉμ νλ‘μ νΈλ³λ‘ κ°κ° λ€λ₯Έ λ²μ μ μ¬μ©ν μ μλ€. ruby μ rvm, Node.js μ nvm μ κ°μ μν μ νλ Version Manager μ΄λ€. https://github.com/pyenv/pyenv pyenv μ€μΉ python μ μ€μΉνλλ° νμν ν¨ν€μ§ μ€μΉ 1 $ sudo apt install curl git-core gcc make zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libssl-dev pyenv μμ€ λ€μ΄λ‘λ Gibhub μ μ₯μμμ μ΅μ pyenv μμ€λ₯Ό ν΄λ‘ νμ¬ ~/.
μ€νλ§ 5.0 λ§μ€ν° μ€ν°λ μ€νλ§ 5.0 λ§μ€ν° μ€ν°λ νμ΅ λ΄μ© μ 리μ
λλ€. μ€νλ§ μν리ν°λ‘ REST μλΉμ€ λ³΄νΈ μ΅κ·Όμλ μλΉμ€ μμ€ν
λ€λΌλ¦¬ REST API κΈ°λ°μ ν΅μ μ΄ λ§μ΄ μ΄λ£¨μ΄μ§κ³ μλ€. λ€μ΄ν°λΈ μ±κ³Ό μλ² κ° ν΅μ λΏλ§ μλλΌ μλ°μ€ν¬λ¦½νΈ μΉ ν΄λΌμ΄μΈνΈ μ μλ²κ°μλ REST API ν΅μ μ λ§μ΄ μ¬μ©νκΈ° λλ¬Έμ REST μλΉμ€(리μμ€) μ λν 보μμ΄ μ€μν΄ μ§κ³ μλ€.
μΈμ¦(Authentication) κ³Ό κΆν (Authorization) μΈμ¦(Authentication): μλΉμ(ν΄λΌμ΄μΈνΈ) κ° μλΉμ€(리μμ€) μ μ κ·Όμ΄ κ°λ₯ν μλΉμμΈμ§ μΈκ°/κΆνλΆμ¬(Authorization) : μ κ·Όμ΄ κ°λ₯νμ§λ§ ν΄λΉ μμ
μ μλΉμ(ν΄λΌμ΄μΈνΈ) μκ² νμ©ν κ²μΈμ§ μΈμ¦λ°©μμ λ€μνλ©°, μ ν΅μ μΈ μΈμ¦λ°©μμΌλ‘λ μ¬μ©μλͺ
(Principle)κ³Ό λΉλ°λ²νΈ(Credential)λ‘ μΈμ¦νλ Credential κΈ°λ° μΈμ¦ λ°©μ κ³Ό OTP λ±κ³Ό κ°μ΄ μΆκ°μ μΈ μΈμ¦λ°©μμ λμ
ν΄ 2κ°μ§ λ°©λ²μΌλ‘ μΈμ¦νλ μ΄μ€ μΈμ¦ λ°©μ κ³Ό μ΅κ·Όμλ OAuth2 μΈμ¦λ°©μ λ νμμ μΌλ‘ μ¬μ©λκ³ μλ€.
μ€νλ§ 5.0 λ§μ€ν° μ€ν°λ μ€νλ§ 5.0 λ§μ€ν° μ€ν°λ νμ΅ λ΄μ© μ 리μ
λλ€. REST μλΉμ€ λ¬Έμμ μλν REST API μ¬ννκ² μ€κ³λλ©΄ μ’κ² μ§λ§, μλΉμμ μꡬμ¬ν λλ μλΉμ€κ° 컀μ§μ λ°λΌ API κ° μ μ 볡μ‘ν΄μ§κ³ κ΄λ¦¬ν΄μΌν API κ°μλ μ μ λκ² λλ€. νμ
μ μν΄μλ API λ λ°λμ λ¬Έμν λμ΄μΌ νλλ°, μμ€ λ³κ²½μ¬νκ³Ό λκΈ°ν μν€κΈ°κ° λ§€λ² λ²κ±°λ‘λ€. μ΄λ¬ν λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ REST API μλΉμ€ λ¬Έμ(μ€ν)μ μλν νλ ν΄μ΄ λ±μ₯νκ² λμλ€. μ£Όμ API Spec μλν λΌμ΄λΈλ¬λ¦¬ SLATE : https://github.
μ€νλ§ 5.0 λ§μ€ν° μ€ν°λ μ€νλ§ 5.0 λ§μ€ν° μ€ν°λ νμ΅ λ΄μ© μ 리μ
λλ€. Bean Validation λ°μ΄ν° μ ν¨μ± κ²μ¦ (Validation) μ λͺ¨λ κ³μΈ΅μμ 곡ν΅μ μΌλ‘ λ°μνλ μμ
μ΄λ€. λ§μ½ λͺ¨λ κ³μΈ΅μμ λμΌν λ΄μ©μ Validation λ‘μ§μ΄ κ°κ°μ λ μ΄μ΄λ³λ‘ ꡬνλμ΄ μλ€λ©΄ μ½λ μ€λ³΅κ³Ό ν¨κ» κ° κ³μΈ΅λ³λ‘ μ€κ΅¬λλ°©μΌλ‘ ꡬνλ κ²μ¦λ‘μ§κ° λΆμΌμΉλ‘ μΈνμ¬ μ€λ₯κ° λ°μνκΈ°λ μ½λ€.
[μΆμ²] https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/images/application-layers.png μ΄λ¬ν Validation μ€λ³΅μ νΌνκΈ° μν΄ λλ©μΈμ κ²μ¦ λ‘μ§μ λλ©μΈ λͺ¨λΈ μ체μ λ¬Άμ΄μ μ μνκΈ°λ νλ€. νμ§λ§ λλ©μΈ λͺ¨λΈμ μ€μ μ½λλ‘ Validation λ‘μ§μ νννλ€λ©΄ λλ©μΈ λͺ¨λΈ μμ²΄κ° μ₯ν©νμ§κ³ 볡μ‘ν΄μ§κ² λλ€.
μ€νλ§ 5.0 λ§μ€ν° μ€ν°λ μ€νλ§ 5.0 λ§μ€ν° μ€ν°λ νμ΅ λ΄μ© μ 리μ
λλ€. REST μ±μλ λͺ¨λΈ (Richardson Maturity Model) Richardson Maturity Model μμλ Restful Web Service λ₯Ό λ€μμ λ¨κ³λ‘ λλμ΄ μ±μλλ₯Ό μ μνκ³ μλ€. Level 0 : μ격 νλ‘μμ νΈμΆ (Remote Procedure Invocation) μ κΈ°λ°ν ννλ‘ resource κ΅¬λΆ μμ΄ μ€κ³λ HTTP API (http://server/getPosts, http://server/deletePosts, http://server/doThis, http://server/doThat λ±)
Level 1 : resourceλ₯Ό URI ν΅ν΄ λνλΈλ€. (λͺ
μ¬ μ¬μ©) κ·Έλ¬λ, HTTP METHOD(GET,POST,PUT,DELETE λ±) μ¬μ©νμ§ μλλ€. (http://server/accounts, http://server/accounts/10)