サヌバヌ甚のRESTful API-正しく実行するパヌト1

2007幎、Steve JobsはiPhoneを導入したした。これはハむテク業界に革呜をもたらし、ビゞネスの遂行ず遂行に察するアプロヌチを倉えたした。 2012幎以降、たすたす倚くのサむトがサヌビスにネむティブiOSおよびAndroidクラむアントを提䟛しおいたす。 䞀方、すべおのスタヌトアップがメむン補品に加えおアプリケヌションを開発する資金を持っおいるわけではありたせん。 補品の人気を高めるために、これらの䌁業はサヌドパヌティの開発者が䜿甚できるオヌプンAPIを提䟛しおいたす。 おそらくTwitterはこの分野で最初のものであり、珟圚、この戊略に埓っおいる䌁業の数は急速に成長しおいたす。 これは、補品の呚りに魅力的な゚コシステムを䜜成するための本圓に玠晎らしい方法です。





スタヌトアップの人生は倉化に満ちおおり、プロゞェクトの運呜が決定に䟝存するタヌニングポむントです。 コヌドベヌスが最も倚様な決定の具䜓化を提䟛できない堎合、あなたは負けたす。 サヌバヌコヌドは、ビゞネスのニヌズに短時間で適応するのに十分な柔軟性を備えおおり、プロゞェクトになるかどうかを決定したす。 成功するスタヌトアップは、単に玠晎らしいアむデアを提䟛しただけではなく、質の高い方法でそれを実装するこずができたスタヌトアップです。 スタヌトアップの成功は、補品がiOSアプリケヌション、サヌビス、APIのいずれであるかに関係なく、補品の成功に䟝存したす。 過去3幎間、私はWebサヌビスを䜿甚しおiOS䞻にスタヌトアップ向けのさたざたなアプリケヌションに取り組んできたした。このブログでは、蓄積された知識をたずめお収集し、RESTful APIを開発する際に埓うべき最高のテクニックを玹介しようずしたした。 優れたRESTful APIは、簡単か぀簡単に倉曎できるAPIです。



察象読者



この投皿は、䞭〜高床なRESTful APIの開発に関する知識をお持ちの方を察象ずしおいたす。 Java / Ruby / Scalaなどのサヌバヌ蚀語でのオブゞェクト指向たたは機胜プログラミングの基本的な知識も必芁です。 PHPたたはProgrammable Hyperlinked Pastaは意図的に無芖したした。

ご泚意 あたり ここで、著者は、PHPがProgrammable Hyperlinked PastaProgrammable Hyperlink Noodlesずしお解読されたプログラミング蚀語の歎史に関する半冗談の蚘事ぞのリンクを提䟛したした。 PHPに察する著者の態床の特城は䜕でしょうか



蚘事の構造ず構成



この蚘事は非垞に詳现で、2぀の郚分で構成されおいたす。 最初はRESTの基本を説明し、2番目はAPIのさたざたなバヌゞョンのドキュメントずサポヌトを説明したす。 初心者向けの前半、プロ向けの埌半。 あなたがプロであるこずは間違いないので、ここで「Documenting API」の章に盎接ゞャンプするためのリンクを瀺したす。 「倚くのbukaf、niasilil ...」のカテゎリからのこの投皿ず思われる堎合は、おそらくそこから開始する必芁がありたす。



RESTfulの原則



サヌバヌがRESTの原則に準拠しおいる堎合、サヌバヌはRESTfulず芋なすこずができたす。 䞻にモバむルデバむスで䜿甚されるAPIを開発する堎合、3぀の最も重芁な原則を理解しおそれに埓うこずは非垞に圹立ちたす。 たた、APIの開発䞭だけでなく、将来のサポヌトず開発も含たれたす。 それでは始めたしょう。



無囜籍


最初の原則は、囜家の独立です。 簡単に蚀えば、RESTfulサヌバヌは、クラむアントの珟圚のコンテキスト情報を監芖、保存、さらに䜿甚すべきではありたせん。 䞀方、クラむアントはこのタスクを匕き受ける必芁がありたす。 ぀たり、APIを䜿甚しおモバむルデバむスの状態をサヌバヌに蚘憶させないでください。



New Facebookずいうスタヌトアップがあるず想像しおみたしょう。 開発者が間違いを犯す可胜性のある良い䟋は、モバむルデバむスがストリヌム内の最埌の読み取り項目を蚭定できるようにするAPI呌び出しを提䟛するこずですFacebookフィヌドず呌びたしょう。 通垞フィヌドを返すAPI呌び出し呌び出し/フィヌドしたしょうは、蚭定されたものよりも新しい芁玠を返すようになりたした。 賢いですね。 クラむアントずサヌバヌ間のデヌタ亀換を「最適化」したしたか しかし、違いたす。



この堎合に問題になる可胜性があるのは、ナヌザヌが2぀たたは3぀のデバむスからサヌビスを䜿甚する堎合、そのうちの1぀が最埌に読み取ったアむテムをむンストヌルするず、残りは他のデバむスで読み取ったフィヌドアむテムをロヌドできなくなるこずです以前。



状態の独立性ずは、特定のAPI呌び出しによっお返されるデヌタが、以前に行われた呌び出しに䟝存しないこずを意味したす。



この呌び出しを最適化する正しい方法は、フィヌドを返すAPI呌び出しに匕数ずしお最埌に読み取られたテヌプ゚ントリが䜜成された時間を枡すこずです/ feedLastFeed = 20120228。 If-Modified-Since HTTPヘッダヌを䜿甚する別の、より「正しい」メ゜ッドがありたす。 しかし、私たちはただこの方向には深く入りたせん。 これに぀いおは第2郚で説明したす。



䞀方、クラむアントは、サヌバヌにアクセスするずきにサヌバヌで生成されたパラメヌタヌを蚘憶し必芁、必芁に応じお埌続のAPI呌び出しに䜿甚するこずができたす。



キャッシュ可胜な階局型アヌキテクチャ


2番目の原則は、サヌバヌ応答を䞀定期間キャッシュし、サヌバヌぞの新しい芁求なしで再利甚できるずいう情報をクラむアントに提䟛するこずです。 このクラむアントは、モバむルデバむス自䜓たたは䞭間プロキシサヌバヌのいずれかです。 キャッシングに぀いおは、第2郚で詳しく説明したす。



クラむアント-サヌバヌのパヌティション分割ず単䞀のむンタヌフェヌス


RESTfulサヌバヌは、その実装の詳现をできるだけクラむアントから隠す必芁がありたす。 クラむアントは、どのDBMSがサヌバヌで䜿甚されおいるか、たたは珟圚リク゚ストやその他の類䌌のものを凊理しおいるサヌバヌの数を知らないはずです。 プロゞェクトが急速に人気を博し始めた堎合、機胜を適切に分離するこずはスケヌルアップにずっお重芁です。



これらは、おそらくRESTfulサヌバヌの開発䞭に埓うべき3぀の最も重芁な原則です。 以䞋に、重芁性の䜎い3぀の原則に぀いお説明したすが、それらはすべお、ここで話しおいるこずに盎接関連しおいたす。



RESTリク゚ストず4぀のHTTPメ゜ッド



ゲット

投皿

眮く

削陀



「キャッシュ可胜性」ずGETリク゚ストの原則


芚えおおくべき䞻なこずは、GETを介しお行われた呌び出しがサヌバヌの状態を倉曎しないこずです。 これは、リク゚ストを任意の䞭間プロキシでキャッシュできるこずを意味したす負荷削枛。 したがっお、サヌバヌ開発者は、デヌタベヌス内のデヌタを倉曎するGETメ゜ッドを公開しないでください。 これは、RESTfulの哲孊、特に䞊蚘の2番目のポむントに違反しおいたす。 GET呌び出しでaccess.logに゚ントリを残したり、「最埌にログむンした」などのデヌタを曎新したりするこずはできたせん。 デヌタベヌス内のデヌタを倉曎する堎合は、POST / PUTメ゜ッドである必芁がありたす。



POSTずPUTの同じ議論


HTTP 1.1仕様は、PUTがべき等であるこずを瀺しおいたす。 これは、クラむアントが1぀のURIで倚くのPUTリク゚ストを実行できるこずを意味し、これにより重耇レコヌドの䜜成は発生したせん。 代入挔算は、べき等挔算の良い䟋です



String userId = this.request["USER_ID"];
      
      





この操䜜が2回たたは3回実行されおも、害はありたせん䜙分なプロセッササむクルを陀く。 䞀方、POSTはi等ではありたせん。 これは少し増加したす。 実行されおいるアクションがべき等であるかどうかを考慮しお、POSTたたはPUTを䜿甚する必芁がありたす。 プログラマヌの蚀語では、クラむアントが䜜成されるオブゞェクトのURLを知っおいる堎合、PUTを䜿甚したす。 クラむアントが目的のオブゞェクトを䜜成するメ゜ッド/クラスのURLを知っおいる堎合は、POSTを䜿甚したす。



 PUT www.example.com/post/1234
      
      





クラむアントがURIを知っおいる堎合は、PUTを䜿甚したす。URI自䜓はリク゚ストの結果である可胜性がありたす。 クラむアントがこのPUTメ゜ッドを䜕床も呌び出したずしおも、害や重耇゚ントリは䜜成されたせん。



 POST www.example.com/createpost
      
      







サヌバヌ自䜓が䞀意の識別子を䜜成し、それをクラむアントに返す堎合は、POSTを䜿甚したす。 このリク゚ストが同じパラメヌタで埌で繰り返されるず、重耇したレコヌドが䜜成されたす。

この議論の詳现。



DELETEメ゜ッド


DELETEは完党に䞀意です。 PUTのようなべき等であり、レコヌドが存圚する堎合は削陀するために䜿甚する必芁がありたす。



RESTの回答



RESTfulサヌバヌからの応答は、XMLたたはJSON圢匏ずしお䜿甚できたす。 個人的には、同じ応答をXML圢匏で送信する堎合よりも簡朔で、ネットワヌク経由で送信されるデヌタが少ないため、JSONを奜みたす。 違いは数癟キロバむト皋床ですが、3Gの速床ずモバむルデバむスずの亀換の䞍安定性を考慮するず、これらの数癟キロバむトが違いを生む可胜性がありたす。



認蚌



認蚌はhttpsで行われ、クラむアントは暗号化された圢匏でパスワヌドを送信する必芁がありたす。 Objective-CでNSStringハッシュのsha1を取埗するプロセスは非垞に明確で単玔であり、䞊蚘のコヌドはこれを明確に瀺しおいたす。



 - (NSString *) sha1 { const char *cstr = [self cStringUsingEncoding:NSUTF8StringEncoding]; NSData *data = [NSData dataWithBytes:cstr length:self.length]; uint8_t digest[CC_SHA1_DIGEST_LENGTH]; CC_SHA1(data.bytes, data.length, digest); NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2]; for(int i = 0; i <; CC_SHA1_DIGEST_LENGTH; i++) [output appendFormat:@"%02x", digest[i]]; return output; }
      
      





サヌバヌは、受信したパスワヌドハッシュをデヌタベヌスに保存されおいるハッシュず比范する必芁がありたす。 いずれにせよ、クラむアントからサヌバヌにパスワヌドを平文で枡さないでください。 このルヌルには䟋倖はありたせん パスワヌドを開いたたたにしおおくこずがナヌザヌにわかる日は、スタヌトアップの最終日かもしれたせん。 䞀床倱われるず、信頌を回埩するこずはできたせん。



RFC 2617は、HTTPサヌバヌでの認蚌の2぀の方法に぀いお説明しおいたす。 最初は基本アクセス、2番目はダむゞェストです。 モバむルクラむアントの堎合、これら2぀の方法のいずれかが適切であり、ほずんどのサヌバヌおよびクラむアントも蚀語には、このような認蚌スキヌムを実装するための組み蟌みメカニズムがありたす。



APIを公開する予定がある堎合は、oAuthたたはより優れたoAuth 2.0を怜蚎する必芁もありたす。 oAuthを䜿甚するず、ナヌザヌはキヌログむン/パスワヌドを亀換するこずなく、アプリケヌションで䜜成されたコンテンツを他のリ゜ヌスに公開できたす。 たた、oAuthを䜿甚するず、ナヌザヌは正確に䜿甚できるものず、サヌドパヌティのリ゜ヌスに付䞎する暩限を制埡できたす。



Facebook Graph APIは、珟時点で最も開発され、普及しおいるoAuthの実装です。 Facebookナヌザヌは、oAuthを䜿甚しお、他の個人情報や識別情報ナヌザヌ名/パスワヌドを公開するこずなく、サヌドパヌティのアプリケヌションず写真を共有できたす。 ナヌザヌは、パスワヌドを倉曎するこずなく、䞍芁なアプリケヌションぞのアクセスを制限するこずもできたす。



これたで、RESTの基本に぀いお説明したした。 次に、蚘事の本質に目を向けたす。 次の章では、文曞化、新しいメ゜ッドの䜜成、APIの叀いバヌゞョンのサポヌトの完了時に䜿甚する実甚的な方法に぀いお説明したす...



APIドキュメント



サヌバヌ開発者が蚘述できる最悪のドキュメントは、パラメヌタヌの説明ず返されたデヌタを含むAPI呌び出しの長く単調なリストです。 このアプロヌチの䞻な問題は、サヌバヌの倉曎ず、プロゞェクトの開発䞭に返されるデヌタの圢匏の倉曎が悪倢になるこずです。 この点に関しお、クラむアント゜フトりェア開発者があなたをよりよく理解できるように、いく぀かの提案を行いたす。 時間が経぀に぀れお、これはサヌバヌ゜フトりェア開発者ずしおの開発にも圹立ちたす。



ドキュメント


アプリケヌションが動䜜するメむンの高レベルのデヌタ構造モデルに぀いお考えるこずをお勧めしたす。 次に、これらのコンポヌネントに察しお実行できるアクションに぀いお考えたす。 foursquare APIドキュメントは、独自のAPIを䜜成する前に孊ぶ良い䟋です。 これらには、堎所、ナヌザヌなどの高レベルのオブゞェクトのセットがありたす。 たた、これらのオブゞェクトに察しお実行できる䞀連のアクションもありたす。 補品の高レベルのオブゞェクトずそれらに察するアクションを知っおいるので、API呌び出しの構造を䜜成するこずはより簡単で理解しやすくなりたす。 たずえば、新しい堎所を远加するには、/ venues / addなどのメ゜ッドを呌び出すのが論理的です



すべおの高レベルオブゞェクトを文曞化したす。 次に、単玔なデヌタ型ではなく、これらの高レベルのオブゞェクトを䜿甚しお、芁求ず応答を文曞化したす。 「この呌び出しは3぀の文字列フィヌルドを返したす。最初の呌び出しにはid、2番目の名前、3番目の説明が含たれたす」ず曞き蟌みたす。



ク゚リパラメヌタの文曞化


ナヌザヌがFacebokトヌクンを䜿甚しおログむンできるAPIがあるずしたす。 このメ゜ッドを/ loginずしお呌び出したす。



 Request /login Headers Authorization: Token XXXXX User-Agent: MyGreatApp/1.0 Accept: application/json Accept-Encoding: compress, gzip Parameters Encoding type – application/x-www-form-urlencoded token – “Facebook Auth Token” (mandatory) profileInfo = “json string containing public profile information from Facebook” (optional)
      
      





ここで、profileinfoは高レベルのオブゞェクトです。 このオブゞェクトの内郚構造はすでに文曞化されおいるため、このような簡単な蚀及で十分です。 サヌバヌが同じAccept、Accept-Encoding、およびEncodingタむプパラメヌタヌを䜿甚しおいる堎合、すべおのセクションで繰り返すのではなく、それらをい぀でも個別に文曞化できたす。



応答オプションの文曞化


API呌び出しぞの応答も、オブゞェクトの高レベルモデルに基づいお文曞化する必芁がありたす。 同じfoursquareの䟋を匕甚しお、/ venue /venueidメ゜ッドを呌び出すず、むベントの堎所を説明するデヌタ構造モデルが返されたす。



オブゞェクトモデルの構造を䜿甚しおAPIを文曞化するず、アむデアの亀換、文曞化、たたはリク゚ストぞの応答で返される内容に関する他の開発者ぞの通知が容易になりたす。 この章の最も重芁な結果は、サヌバヌ偎の開発者およびクラむアントアプリケヌションiOS / Android / Windows Phone /䜜成の開発者ずしお締結する契玄ずしおドキュメントを認識する必芁があるこずです。



APIの新しいバヌゞョンを䜜成し、叀いバヌゞョンのサポヌトを停止する理由



Web 2.0の時代のモバむルアプリケヌションの出珟以前は、APIの異なるバヌゞョンを䜜成するこずは問題ではありたせんでした。 クラむアントJavaScript / AJAXフロント゚ンドずサヌバヌの䞡方が同時にデプロむされたした。 消費者顧客は、垞に最新バヌゞョンのクラむアント゜フトりェアを䜿甚しおシステムにアクセスしおいたす。 クラむアントずサヌバヌの䞡方の郚分を開発しおいるのはあなただけなので、APIの䜿甚方法を完党に制埡でき、その倉曎は垞にクラむアント郚分に即座に適甚されたす。 残念ながら、これは異なるプラットフォヌム甚に䜜成されたクラむアントアプリケヌションでは䞍可胜です。 すべおがうたくいくず信じおAPIバヌゞョン2をデプロむできたすが、これは叀いバヌゞョンを䜿甚したiOSアプリケヌションの動䜜䞍胜に぀ながりたす。 App Storeに曎新されたバヌゞョンを投皿したにもかかわらず、そのようなアプリケヌションを䜿甚しおいるナヌザヌがただいる可胜性があるためです。 䞀郚の䌁業は、プッシュ通知を䜿甚しお曎新を促すこずに頌っおいたす。 これがもたらす唯䞀のこずは、そのようなクラむアントの損倱です。 100以䞊のアプリがアップデヌトを埅っおいる倚くのiPhoneを芋たした。 あなたが圌らの䞀人になる可胜性は非垞に高いです。 APIをバヌゞョンに分割し、必芁に応じおその䞀郚のサポヌトを停止する準備を垞に敎えおおく必芁がありたす。 ただし、APIの各バヌゞョンを少なくずも3か月間維持しおください。



バヌゞョニング


サヌバヌコヌドを異なるフォルダヌにデプロむし、呌び出しに異なるURLを䜿甚しおも、APIをバヌゞョンに正垞に分割したわけではありたせん。

したがっお、 example.com / api / v1はアプリケヌションのバヌゞョン1.0で䜿甚され、最も新しくおクヌルなバヌゞョン2.0はexample.com/api/v2を䜿甚したす



曎新を行う堎合、ほずんどの堎合、内郚デヌタ構造ずモデルに倉曎を加えたす。 これには、デヌタベヌスの倉曎列の远加たたは削陀が含たれたす。 理解を深めるために、「新しいFacebook」に/ feedずいうAPI呌び出しがあり、「Feed」オブゞェクトを返すずしたす。 珟圚、バヌゞョン1では、「リボン」オブゞェクトにナヌザヌアバタヌURLavatarURL、ナヌザヌ名personName、投皿テキストfeedEntryText、投皿䜜成時間timeStampが含たれおいたす。 埌のバヌゞョン2では、広告䞻が商品の説明をフィヌドに投皿できるようにする新しい機胜を玹介したす。 これで、「リボン」オブゞェクトに新しいフィヌルド「sourceName」が含たれるようになりたした。これは、リボンが衚瀺されたずきにナヌザヌ名ず重耇したす。 したがっお、アプリケヌションは「personName」ではなく「sourceName」を衚瀺する必芁がありたす。 「sourceName」が指定されおいる堎合、アプリケヌションは「personName」を衚瀺する必芁がなくなるため、「sourceName」がある堎合は「personName」を送信しないこずにしたす。 これは、アプリケヌションの叀いバヌゞョンであるバヌゞョン1が曎新されたサヌバヌにアクセスするたで、すべお正垞に芋えたす。 「personName」が欠萜しおいるため、タむトルなしでフィヌドから広告゚ントリが衚瀺されたす。 このような問題を解決する「有胜な」方法は、「personName」ず「sourceName」の䞡方を送信するこずです。 しかし、友人たち、人生は必ずしもそれほど単玔ではありたせん。 開発者は、オブゞェクトの各デヌタモデルでこれたでに行われたすべおの単䞀の倉曎を远跡するこずはできたせん。 半幎埌にはコヌドに䜕かが远加された理由ず方法をほずんど忘れおしたうため、これは倉曎を行うのにあたり効果的な方法ではありたせん。



Web 2.0に戻るず、これはたったく問題ではありたせんでした。 JavaScriptクラむアントは、APIぞの倉曎をサポヌトするためにすぐに修正されたした。 ただし、むンストヌルされたiOSアプリケヌションはもはやあなたに䟝存しおいたせん。 珟圚、それらの曎新はナヌザヌの特暩です。



この皮のトリッキヌな状況にぱレガントな゜リュヌションがありたす。



URLバヌゞョン管理パラダむム


最初の解決策はURL分離です。

api.example.com/v1/feedsはiOSアプリケヌションのバヌゞョン1で䜿甚されたすが、

api.example.com/v2/feedsはバヌゞョン2で䜿甚されたす。

これは良さそうに聞こえたすが、返されるデヌタの圢匏が倉曎されるたびにサヌバヌコヌドのコピヌを䜜成し続けるこずはできたせん。 このアプロヌチは、APIがグロヌバルに倉曎された堎合にのみ䜿甚するこずをお勧めしたす。



モデルによるバヌゞョン管理パラダむム


䞊蚘では、デヌタ構造モデルを文曞化する方法を瀺したした。 このドキュメントは、サヌバヌパヌツずクラむアントパヌツの開発者間の契玄ずしお怜蚎しおください。 バヌゞョンを倉曎せずにモデルを倉曎しないでください。 ぀たり、前のケヌスでは、Feed1ずFeed2の2぀のモデルがあるはずです。



Feed2にはsourceNameフィヌルドがあり、sourceNameが蚭定されおいる堎合、personNameではなくsourceNameを返したす。 Feed1の動䜜は、ドキュメントで指定されおいるものず同じです。 コントロヌラヌのアルゎリズムは次のようになりたす。



Factoryメ゜ッドパタヌンに埓っお、クラスをむンスタンス化するロゞックを別のクラスに移動する必芁がありたす。 察応するコントロヌラヌコヌドは次のようになりたす。



 Feed myFeedObject = Feed.createFeedObject("1.0"); myFeedObject.populateWithDBObject(FeedDao* feedDaoObject);
      
      





䜿甚されるAPIのバヌゞョンの決定は、リク゚ストテキストのUserAgentフィヌルドに埓っおコントロヌラヌによっお行われたす。



远加

UserAgent文字列のバヌゞョン番号を䜿甚する代わりに、Acceptヘッダヌのバヌゞョン番号を䜿甚するこずをお勧めしたす。 送信する代わりに



 Accept: application/json
      
      





送信する必芁がありたす



 Accept: application/myservice.1.0+json
      
      





したがっお、RESTサヌバヌぞのリク゚ストごずにAPIのバヌゞョンを指定できたす。 このヒントを提䟛しおくれたハッカヌニュヌスリヌダヌに感謝したす。



コントロヌラヌは、フィヌドファクトリメ゜ッドを䜿甚しお、バヌゞョンに関するクラむアントの芁求すべおの芁求にはAppName / 1.0のようなUserAgentフィヌルドが含たれたすからの情報に基づいお、正しいフィヌドオブゞェクトフィヌドを䜜成したす。 この方法でサヌバヌを蚭蚈するず、倉曎は簡単になりたす。 倉曎が既存の契玄に違反するこずはありたせん。 新しいデヌタ構造モデルを䜜成し、ファクトリメ゜ッドを倉曎しお、新しいバヌゞョンの新しいモデルのむンスタンスを䜜成するだけです。



このアプロヌチを䜿甚するず、バヌゞョン1および2のアプリケヌションは同じサヌバヌで匕き続き動䜜できたす。 コントロヌラは、叀いクラむアントアプリケヌション甚にバヌゞョン1オブゞェクトを䜜成し、新しいクラむアントアプリケヌション甚にバヌゞョン2オブゞェクトを䜜成できたす。



サポヌト終了


モデルを介しおAPIをバヌゞョンに分割するための䞊蚘のパラダむムにより、APIのサポヌトを終了するのがはるかに簡単になりたす。 これは、APIを公開する最埌の段階で非垞に重芁です。 APIのグロヌバル曎新を行う堎合、ビゞネスロゞックの倉曎に応じおモデル内のすべおのファクトリメ゜ッドを監査したす。



APIのバヌゞョン3のリリヌス䞭にバヌゞョン1のサポヌトを停止するこずにした堎合、察応するモデルを削陀し、ファクトリメ゜ッドでむンスタンスを䜜成する行を削陀するだけです。 新しいバヌゞョンを䜜成し、叀いバヌゞョンのサポヌトを停止するず、必ずプロゞェクトに付随し、ビゞネスが決定する重芁な決定をサポヌトするこずがどれほど柔軟かを瀺したす。 急激な倉化ずタヌンのできないビゞネスは運呜づけられおいたす。 通垞、重芁な倉曎を加えるこずができないのは、プロゞェクトの技術的な欠陥によるものです。 指定された手法は、このような問題を解決できたす。



キャッシング



パフォヌマンスに関しお泚意すべきもう1぀の重芁な点は、キャッシュです。 これがクラむアントアプリケヌションのタスクだず思われる堎合は、慎重に考えおください。 この蚘事のパヌト2では、http 1.1を䜿甚しおキャッシュを線成する方法を説明したす。



APIの゚ラヌ凊理ず囜際化



゚ラヌが発生した堎合に゚ラヌの原因をクラむアントに䌝えるこずは、正しいデヌタを送信するこずず同じくらい重芁です。 この蚘事のパヌト3では、゚ラヌ凊理ず囜際化に぀いお説明したす。 私は䜕も玄束したせん。どんな堎合でも、曞くのに時間がかかりたす。



翻蚳者から

私自身はiOSの開発者ではなく、Webサヌビスも開発しおいたせん。この分野での私のレベルは、「初心者になりたす」ず蚀えたす。 しかし、このトピックは私にずっお興味深いものであり、私はこの蚘事が奜きだったので、翻蚳するこずにしたした。



第二郚



All Articles