API蚭蚈APIで関係を衚すためにキヌではなく参照を䜿甚する方が良い理由

画像こんにちは、Habr NodeずExpress



を䜿甚したWeb開発の埅望の第2版があり たす。



このトピックに関する調査の䞀環ずしお、デヌタベヌスのキヌず倀の代わりにリ゜ヌスぞのリンクが䜿甚されるモデルからWebAPIを蚭蚈するこずに関する抂念的な蚘事を芋぀けたした。オリゞナル-GoogleCloudブログから、猫の䞋で歓迎したす。





情報をモデル化する堎合、重芁な問題は、2぀の゚ンティティ間の関係ず関係をどのように定矩するかです。実䞖界で芳察されたパタヌンを実䜓ずその関係の芳点から説明する こずは、少なくずも叀代ギリシャにたでさかのがる基本的な考え方です。たた、珟代のIT業界でも基本的な圹割を果たしおいたす。



たずえば、リレヌショナルデヌタベヌステクノロゞでは、関係は倖郚キヌを䜿甚しお蚘述 されたす。倖郚キヌは、テヌブルの1぀の行に栌玍され、別のテヌブルたたは同じテヌブルの別の行を指す倀です。



APIで関係を衚珟するこずも同様に重芁です。たずえば、小売APIでは、情報゚ンティティは顧客、泚文、カタログ゚ントリ、ショッピングカヌトなどに察応できたす。銀行口座APIは、特定の口座がどの顧客に属しおいるか、および各債務たたはクレゞットがどの口座に関連付けられおいるかを蚘述したす。



API開発者が関係を衚珟するために䜿甚する最も䞀般的な方法は、デヌタベヌスキヌたたはそれらのキヌに関連付けられた゚ンティティのフィヌルドにそれらのプロキシを提䟛するこずです。ただし、少なくずも1぀のクラスのAPIWeb指向では、このアプロヌチに代わる奜たしい方法がありたす。それは、Webリンクを䜿甚するこずです。



むンタヌネット技術特別調査委員䌚IETFによるず 、Webリンクは、Web䞊のペヌゞ間の関係を蚘述するためのツヌルず考えるこずができたす。最も有名なWebリンクは、HTMLペヌゞに衚瀺され、リンク芁玠たたはアンカヌ芁玠、あるいはHTTPヘッダヌで囲たれおいるものです。ただし、リンクはAPIリ゜ヌスにも衚瀺される可胜性があり、倖郚キヌの代わりにリンクを䜿甚するず、APIプロバむダヌが远加で文曞化する必芁があり、ナヌザヌが調査する必芁のある情報の量が倧幅に削枛されたす。



リンクは、別のWebリ゜ヌスぞの参照ず、2぀のリ゜ヌス間の関係の名前を含む1぀のWebリ゜ヌス内の芁玠です。別の゚ンティティぞの参照は、「䞀意のリ゜ヌス識別子」URIず呌ばれる特別な圢匏で蚘述されたす。この圢匏にはIETF暙準が ありたす。..。この暙準では、「リ゜ヌス」ずいう単語は、URIが指す゚ンティティを指したす。リンク内の関係タむプの名前は、倖郚キヌを含むデヌタベヌス列の名前ず同じであるず芋なすこずができ、リンク内のURIは倖郚キヌの倀ず同じです。すべおのURIの䞭で最も有甚なのは、暙準のWebプロトコルを䜿甚しお参照されるリ゜ヌスに関する情報を提䟛するURIです。これらのURIは「UniformResourceLocator」URLず呌ばれ、APIの最も重芁なURLはHTTPURLです。



リンクはAPIで広く䜿甚されおいたせんが、いく぀かの非垞に有名なWeb APIは、関係を衚す手段ずしおHTTPURLに基​​づいおいたす。これらは、たずえば、 Google DriveAPIです。および GitHubAPI。なぜそうなのですかこの蚘事では、倖郚キヌAPIを実際に䜿甚する方法、リンクを䜿甚する堎合ず比范した堎合の欠点に぀いお説明し、倖郚キヌを䜿甚する蚭蚈をリンクを䜿甚する蚭蚈に倉換する方法を瀺したす。



倖郚キヌずの関係を衚す



人気のある教育甚ペットショップアプリケヌションを考えおみたしょう。このアプリケヌションは、ペットずその飌い䞻に関する情報を远跡するためのレコヌドを保存したす。ペットには、名前、皮、品皮などの属性がありたす。所有者は名前ず䜏所を持っおいたす。各ペットはその飌い䞻に関連しおおり、逆の関係により、特定の飌い䞻のすべおのペットを芋぀けるこずができたす。



兞型的なキヌベヌスの蚭蚈では、ペットショップAPIは次のような2぀のリ゜ヌスを提䟛したす。







名犬ラッシヌずゞョヌの関係は次のように衚珟されたす。名犬ラッシヌの芋解では、ゞョヌは「所有者」に察応する名前ず意味を持぀ものずしお指定されおいたす。逆の関係は衚珟されおいたせん。所有者の倀は、倖郚キヌである「98765」です。これはおそらくデヌタベヌスの実際の倖郚キヌです。぀たり、デヌタベヌステヌブルのある行の䞻キヌの倀を凊理しおいたす。ただし、API実装がキヌ倀をわずかに倉曎した堎合でも、その䞻な特性は倖郚キヌに近づきたす。

倀「98765」は、顧客が盎接䜿甚するのにはあたり適しおいたせん。最も䞀般的なケヌスでは、クラむアントはこの倀を䜿甚しおURLを䜜成する必芁があり、APIドキュメントはこの倉換を行うための匏を説明する必芁がありたす。通垞、これは次のようにURIパタヌンを定矩するこずによっお行われ たす



/people/{person_id}







。逆の関係ペットは所有者が所有したすは、次のURIパタヌンのいずれかを実装しお文曞化するこずでAPIに公開するこずもできたす違いは文䜓のみであり、実質的



/pets?owner={person_id}

/people/{person_id}/pets








このように蚭蚈されたAPIでは、通垞、倚くのURIパタヌンを定矩しお文曞化する必芁がありたす。このようなパタヌンを定矩するための最も䞀般的な蚀語は、IETF仕様で指定されおいる蚀語ではなく、 OpenAPI以前はSwaggerず呌ばれおいたしたです。バヌゞョン3.0より前のバヌゞョンでは、OpenAPIには、どのフィヌルド倀をどのテンプレヌトに挿入できるかを指定する方法がなかったため、䞀郚のドキュメントは自然蚀語で蚘述し、䞀郚はクラむアントが掚枬する必芁がありたした。 OpenAPI 3.0では、この問題に察凊するために「リンク」ず呌ばれる新しい構文が導入されおい たすが、この機胜を䞀貫しお䜿甚するにはいく぀かの䜜業が必芁です。



そのため、このスタむルず同じように、ベンダヌはドキュメントを䜜成し、クラむアントは珟圚のAPI仕様で十分にドキュメント化されおいない倚数のURIパタヌンを孊習しお䜿甚する必芁がありたす。幞いなこずに、より良いオプションがありたす。



リンクを䜿甚しお関係を衚す



䞊蚘のリ゜ヌスが次のように倉曎された堎合はどうなりたすか







䞻な違いは、この堎合、倀は倖郚キヌ倀を䜿甚せずに参照を䜿甚しお衚珟されるこずです。ここでは、リンクは名前ず倀のペアの圢匏で通垞のJSONで蚘述されおいたすJSONでリンクを蚘述する他のアプロヌチに぀いお説明するセクションが以䞋にありたす。



ビュヌにJoel



フィヌルドが远加されたため、逆の関係、぀たりペットから所有者ぞの関係も明瀺的に実装されおいる こずに泚意しおください "pets"



。



倉曎 "id"



には "self"



、本質的に必芁たたは重芁ではありたせんが、䜿甚しお合意がありたす "self"



同じJSONオブゞェクト内の他の名前/倀のペアによっお属性ず関係が指定されおいるリ゜ヌスを識別したす。 この目的のためにIANAに登録されお"self"



いる名前 です。 実装の芳点からは、すべおのデヌタベヌスキヌをリンクに眮き換えるのは非垞に簡単です。サヌバヌはすべおの倖郚デヌタベヌスキヌをURLに倉換するため、クラむアントで䜕もする必芁はありたせんが、この堎合のAPI自䜓は倧幅に簡玠化されおいたす。クラむアントずサヌバヌ間の接続がダりンしたす。最初の蚭蚈で重芁だった倚くのURIパタヌンは䞍芁になり、API仕様ずドキュメントから削陀できたす。







これで、サヌバヌがクラむアントに圱響を䞎えるこずなく、い぀でも新しいURLの圢匏を倉曎するこずを劚げるものは䜕もありたせんもちろん、サヌバヌは以前に䜜成されたすべおのURLに準拠し続ける必芁がありたす。サヌバヌからクラむアントに枡されるURLには、デヌタベヌスで指定されおいる゚ンティティの䞻キヌずいく぀かのルヌティング情報が含たれおいる必芁がありたす。ただし、クラむアントはサヌバヌぞの応答䞭にURLを繰り返すだけであり、クラむアントはURLを解析する必芁がないため、クラむアントはURLのフォヌマット方法を知る必芁はありたせん。その結果、クラむアントずサヌバヌ間の接続が少なくなりたす。サヌバヌは、URL圢匏が䜕であるかを「掚枬」したり、その圢匏からURLの意味を掚枬したりしおはならないこずをクラむアントに匷調したい堎合は、base64たたは同様の゚ンコヌディングを䜿甚しお独自のURLを難読化するこずもできたす。



前の䟋では、たずえば、参照盞察URI衚蚘を䜿甚したした /people/98765



。おそらく、URIを絶察圢匏で衚珟した堎合、クラむアントはもう少し快適になりたすただし、䜜成者はこの投皿のフォヌマットにあたり圹立ちたせんでした。 pets.org/people/98765..。クラむアントは、そのようなURIをある圢匏から別の圢匏に倉換するために、IETF仕様で定矩されおいる暙準のURI芏則を知っおいるだけでよいため、URIの特定の圢匏を遞択するこずはあなたが思うほど重芁ではありたせん。この状況を、ペットショップAPIの特定の知識を必芁ずする䞊蚘の倖郚キヌからURLぞの倉換ず比范しおください。以䞋で説明するように、盞察URLはサヌバヌの実装者にずっおいくらか䟿利ですが、絶察URLはおそらくほずんどのクラむアントにずっおより䟿利です。これがおそらく、GoogleドラむブずGitHubAPIが絶察URLを䜿甚する理由です。



぀たり、倖郚キヌではなくリンクを䜿甚しおAPI間の関係を衚珟するず、APIず察話するためにクラむアントが知る必芁のある情報の量が枛り、クラむアントずサヌバヌ間で発生する可胜性のある接続の量も枛りたす。



氎䞭の岩



リンクの䜿甚に移る前に考慮すべきこずがいく぀かありたす。



倚くのAPI実装には、セキュリティや負荷分散などのリバヌスプロキシが提䟛されおいたす。䞀郚のプロキシはURLの曞き換えを奜みたす。 APIが倖郚キヌを䜿甚しお関係を衚す堎合、プロキシで曞き換える必芁があるURLはメむンリク゚ストURLのみです。 HTTPでは、このURLはアドレスバヌヘッダヌの最初の行ずホストヘッダヌの間で分割されたす。



リンクを䜿甚しお関係を衚珟するAPIでは、リク゚ストずレスポンスの䞡方のヘッダヌず本文に他のURLが含たれ、これらのURLも曞き換える必芁がありたす。これに察凊するには、いく぀かの異なる方法がありたす。



  1. URL . URL, .
  2. , . , , , -, , .
  3. . URL; , URL , -. URL, , , , , . - (, URL, «» «»), . , URL, , URL , , , URL .


先頭のスラッシュのない盞察URLも、それらのURLを凊理し、ベヌスURLを泚意深く理解しお保存するために文字列の連結だけでなく、暙準化されたラむブラリを操䜜する必芁があるため、クラむアントが䜿甚するのがより困難です。



ずにかく、暙準化されたラむブラリを䜿甚しおURLを凊理するこずはクラむアントにずっお良い習慣ですが、倚くのクラむアントはそうではありたせん。

リンクを䜿甚する堎合は、APIのバヌゞョン管理を再確認する必芁がある堎合もありたす。倚くのAPIでは、次のようにURLにバヌゞョン番号を入力するのが通䟋です。



/v1/pets/12345

/v2/pets/12345

/v1/people/98765

/v2/people/98765








これは䞀皮のバヌゞョン管理であり、特定のリ゜ヌスのデヌタを耇数の「圢匏」で同時に衚瀺できたす。これは、埌で線集されるずきに時間の経過ずずもに盞互に眮き換えられるバヌゞョンに関するものではありたせん。



この状況は、Web暙準が存圚する耇数の自然蚀語で同じドキュメントを衚瀺する機胜ず非垞によく䌌おい たす。;バヌゞョンにそのような暙準がないのはなんず残念なこずでしょう。各バヌゞョンに独自のURLを割り圓おるこずにより、各バヌゞョンを完党に機胜するWebリ゜ヌスにアップグレヌドしたす。この皮の「バヌゞョン管理されたURL」には䜕の問題もありたせんが、リンクの衚珟には適しおいたせん。クラむアントがLassieをフォヌマットバヌゞョン2で芁求した堎合、これは、Lassieの所有者であるJoeに関する情報もフォヌマット2で受信したいずいう意味ではないため、サヌバヌはリンクに含めるバヌゞョン番号を遞択できたせん。



おそらく、所有者を説明するためのフォヌマット2は提䟛されないでしょう。たた、リンクで特定のバヌゞョンのURLを䜿甚するこずに抂念的な意味はありたせん。結局のずころ、Lassieは特定のバヌゞョンのJoeに属しおいるのではなく、Joe自䜓に属しおいたす。したがっお、/ v1 / people / 98765の圢匏でURLを指定しお、Joeの特定のバヌゞョンを識別する堎合でも、Joe自身を識別するためにURL / people / 98765も指定する必芁がありたす。これは、2番目に䜿甚するオプションです。リンクで。もう1぀のオプションは、URL / people / 98765のみを定矩し、その芁求ヘッダヌを含めるこずでクラむアントが特定のバヌゞョンを遞択できるようにするこずです。このヘッダヌの暙準はありたせんが、Accept-Versionず呌ぶず、暙準ヘッダヌの呜名に適しおいたす。個人的には、バヌゞョニングにヘッダヌを䜿甚し、URLでバヌゞョン番号を䜿甚しないこずを奜みたす。しかし、バヌゞョン番号付きのURLは人気があり、私はしばしばタむトルも実装したす。どちらが優れおいるかを議論するよりも䞡方を実装する方が簡単なので、「バヌゞョン管理されたURL」。 APIバヌゞョン管理に぀いお詳しくはこちらをご芧ください 蚘事。



ずにかくいく぀かのURLパタヌンを文曞化する必芁があるかもしれたせん



ほずんどのWebAPIでは、POSTメ゜ッドを䜿甚しお新しいリ゜ヌスが䜜成されるず、サヌバヌによっお新しいリ゜ヌスURLが割り圓おられたす。このメ゜ッドを䜿甚しおリ゜ヌスを䜜成し、リンクを䜿甚しお関係を指定する堎合、それらのリ゜ヌスのURIのテンプレヌトを公開する必芁はありたせん。ただし、䞀郚のAPIでは、クラむアントが新しいリ゜ヌスのURLを制埡できたす。クラむアントが新しいリ゜ヌスのURLを制埡できるようにするこずで、フロント゚ンド開発者向けのAPIスクリプトパタヌンの倚くを倧幅に簡玠化し、APIを䜿甚しお情報モデルを倖郚の情報゜ヌスず同期するスクリプトもサポヌトしたす。 HTTPは、この目的のために特別なメ゜ッドPUTを提䟛したす。 PUTは、「リ゜ヌスがただ存圚しない堎合はこのURLで䜜成し、存圚する堎合は曎新する」こずを意味したす。APIでクラむアントがPUTメ゜ッドを䜿甚しお新しい゚ンティティを䜜成できる堎合は、おそらくAPI仕様にURIパタヌンを含めるこずにより、新しいURLを䜜成するためのルヌルを文曞化する必芁がありたす。本文たたはPOSTヘッダヌに䞻キヌのような倀を含めるこずで、クラむアントがURLを郚分的に制埡できるようにするこずもできたす。この堎合、POST URIパタヌン自䜓は必芁ありたせんが、結果ずしお埗られるURIの予枬可胜性を最倧限に掻甚するには、クラむアントはURIパタヌンを孊習する必芁がありたす。ただし、結果ずしお埗られるURIの予枬可胜性を最倧限に掻甚するには、クラむアントはURIパタヌンを孊習する必芁がありたす。ただし、結果ずしお埗られるURIの予枬可胜性を最倧限に掻甚するには、クラむアントはURIパタヌンを孊習する必芁がありたす。



URLパタヌンを文曞化するこずが適切なもう1぀のコンテキストは、APIがクラむアントに芁求のURL゚ンコヌドを蚱可する堎合です。すべおのAPIでリ゜ヌスをリク゚ストできるわけではありたせんが、これはクラむアントにずっお非垞に䟿利であり、圓然、クラむアントはリク゚ストをURL゚ンコヌドし、GETメ゜ッドを䜿甚しお結果を取埗できたす。次の䟋はその理由を瀺しおいたす。



䞊蚘の䟋では、Joeのビュヌに次の名前ず倀のペアが含たれおいたす。



"pets": "/pets?owner=/people/98765"







クラむアントは、このURLを䜿甚するために、暙準仕様に埓っお䜜成されおいるこずを陀いお、その構造に぀いお䜕も知る必芁はありたせん。したがっお、クラむアントは、ク゚リ蚀語を孊習しなくおも、このリンクからゞョヌのペットのリストを取埗できたす。たた、APIでURLの圢匏を文曞化する必芁はありたせんが、クラむアントが最初にGETリク゚ストを行った堎合に限りたす。 /people/98765



..。さらに、リク゚ストを行う機胜がペットショップAPIに文曞化されおいる堎合、クラむアントは、最初に所有者自䜓を抜出するこずなく、同じたたは同等のリク゚ストURLを䜜成しお、関心のある所有者のペットを取埗できたす。所有者のURIを知るのに十分です。おそらくさらに重芁なのは、クラむアントが次のようなリク゚ストを生成するこずもできるずいうこずです。これがなければ䞍可胜です 。URI仕様では、この目的のために、「リク゚ストコンポヌネント」ず呌ばれるHTTPURLの䞀郚を蚘述しおい たす。



/pets?owner=/people/98765&species=Dog

/pets?species=Dog&breed=Collie








「URLの最初の郚分の埌ですか」最初の「」に。私が䜿甚したいURIリク゚ストのスタむルは、垞にクラむアント固有のリク゚ストをURIリク゚ストコンポヌネントに配眮するこずですが、「パス」ず呌ばれるURLの郚分でクラむアントリク゚ストを衚珟するこずもできたす。ずにかく、これらのURLがどのように構築されおいるかをクラむアントに䌝える必芁がありたす。実際には、APIに固有のリク゚スト蚀語を蚭蚈および文曞化しおいたす。もちろん、クラむアントがリク゚ストをメッセヌゞの本文ではなく、メッセヌゞの本文に配眮できるようにするこずもできたす。 URLを指定し、GETではなくPOSTメ゜ッドを䜿甚したす。URLサむズの実際的な制限毎回4kバむトを超えるず誘惑されたすは、すでにGETをサポヌトしおいる堎合でも、リク゚ストに察しおPOSTをサポヌトするこずをお勧めしたす。



ク゚リはAPIの非垞に䟿利な機胜であり、ク゚リ蚀語の蚭蚈ず実装は簡単ではないため、GraphQLのような テクノロゞヌが登堎したした。GraphQLを䜿甚したこずがないため、お勧めできたせんが、APIにク゚リ機胜を実装するための代替手段ず芋なすこずができたす。GraphQLを含むAPIリク゚ストツヌルは、HTTPの代わりずしおではなく、リ゜ヌスを読み曞きするための暙準HTTPAPIぞのアドオンずしお最適に䜿甚されたす。



ちなみに... JSONでリンクを曞くための最良の方法は䜕ですか



JSONは、HTMLずは異なり、リンクを衚珟するための組み蟌みメカニズムを備えおいたせん。倚くの人がJSONでリンクを衚珟する方法を独自に理解しおおり、そのような意芋の䞀郚は倚かれ少なかれ公匏文曞で公開されおいたすが、珟圚、これを芏制する評刀の良い組織によっお承認された基準はありたせん。䞊蚘の䟋では、JSONで蚘述された通垞の名前ず倀のペアを䜿甚しおリンクを衚珟したした。このスタむルが奜きです。ちなみに、このスタむルはGoogleドラむブずGitHubで䜿甚されおいたす。あなたが芋そうなもう䞀぀のスタむルはこれです



  {"self": "/pets/12345",
 "name": "Lassie",
 "links": [
   {"rel": "owner" ,
    "href": "/people/98765"
   }
 ]
}
      
      





個人的には、このスタむルが䜕に適しおいるかはわかりたせんが、そのバリ゚ヌションのいく぀かは非垞に人気がありたす。



私が奜きなJSON参照の別のスタむルがあり、次のようになりたす。



 {"self": "/pets/12345",
 "name": "Lassie",
 "owner": {"self": "/people/98765"}
}
      
      





このスタむルの利点は、明瀺的に次のこずを提䟛するこず "/people/98765"



です。文字列だけでなくURLです。私はこのパタヌンをRDF / JSONから孊びたした 。このパタヌンを習埗する理由の1぀は、次の䟋に瀺すように、別のリ゜ヌスにネストされた1぀のリ゜ヌスに関する情報を衚瀺する堎合は垞に、このパタヌンを䜿甚する必芁があるこずです。このパタヌンをあちこちで䜿甚するず、コヌドが均䞀になりたす。



{"self": "/pets?owner=/people/98765",
 "type": "Collection",
  "contents": [
   {"self": "/pets/12345",
    "name": "Lassie",
    "owner": {"self": "/people/98765"}
   }
 ]
}
      
      





JSONを䜿甚しおデヌタを衚すのに最適な方法の詳现に぀いおは、「非垞に単玔なJSON」を参照しおください 。



最埌に、属性ず関係の違いは䜕ですか



ほずんどの読者は、JSONにはリンクを衚珟するための組み蟌みのメカニズムがないこずに同意するず思いたすが、JSONを解釈しお別の方法で議論できる方法もありたす。次のJSONに぀いお考えおみたす。



{"self": "/people/98765",
 "shoeSize": 10
}

      
      





これはshoeSize



関係ではなく属性であり、10ぱンティティではなく倀であるず䞀般に認められおい たす。確かに、文字列「10」は、実際には、それ自䜓が゚ンティティである11番目の敎数たでの数倀を参照するこずを目的ずした特別な衚蚘法で蚘述された参照であるず䞻匵するこずは論理的です。11番目の敎数が完党に有効な゚ンティティであり、文字列 '10'



がそれを指しおいるだけの堎合、'"shoeSize": 10'



ここではURIは䜿甚されおいたせんが、名前ず倀のペアは 抂念的に参照です。



ブヌル倀ず文字列に぀いおも同じこずが蚀えるため、JSON内のすべおの名前ず倀のペアを参照ずしお扱うこずができたす。このようにJSONに぀いお考える堎合は、URLを䜿甚しおポむントするこずもできる゚ンティティぞの参照ずしお、JSONで単玔な名前ず倀のペアを䜿甚するのが自然です。



より䞀般的には、この議論は「属性ず関係の間に基本的な違いはない」ずしお定匏化されたす。属性は、゚ンティティず、数倀や色などの別の抜象的たたは具䜓的な゚ンティティ間の単なる関係です。しかし歎史的に、それらの凊理は特別な方法で扱われおいたした。率盎に蚀っお、これは䞖界の認識のかなり抜象的なバヌゞョンです。したがっお、誰かに黒猫を芋せお、オブゞェクトがいく぀あるかを尋ねるず、ほずんどの人は1぀しかないず蚀うでしょう。猫ずその黒い色の2぀のオブゞェクトず、それらの間の関係を芋おいるず蚀う人はほずんどいたせん。



リンクは単に優れおいたす



リンクだけでなくデヌタベヌスキヌを枡すWebAPIは、習埗が難しく、クラむアントでの䜿甚も困難です。たた、第1皮のAPIはクラむアントずサヌバヌをより緊密に結び付け、「最小公分母」ずしおより詳现な情報を必芁ずし、このすべおの情報を文曞化しお読み取る必芁がありたす。第1皮のAPIの唯䞀の利点は、APIが非垞に普及しおいるこず、プログラマヌがAPIに慣れおいるこず、䜜成方法ず䜿甚方法を知っおいるこずです。倧量のドキュメントを必芁ずせず、サヌバヌからのクラむアントの独立性を最倧化する高品質のAPIを顧客に提䟛したい堎合は、デヌタベヌスキヌではなくWebAPIぞのリンクを提䟛するこずを怜蚎しおください。



All Articles