服務(wù)配置:YAML結(jié)構(gòu)

本文屬使用Prisma構(gòu)建GraphQL服務(wù)系列羞迷。

概述

服務(wù)定義文件prisma.yml具有以下根屬性:

  • datamodel(必須):數(shù)據(jù)庫模型搏恤,關(guān)系蒂萎,枚舉和其他類型的類型定義葡缰。
  • endpoint:Prisma API的HTTP端點遏插⊙椴校可以省略以提示CLI部署向?qū)А?/li>
  • secret:保護(hù)API端點捞附。
  • schema:Prism API的GraphQL schema的路徑。
  • subscriptions:訂閱webhooks的配置您没。
  • seed:指向包含突變的種子數(shù)據(jù)文件鸟召。
  • custom:用于提供可在prisma.yml其他地方引用的變量。

prisma.yml的精確結(jié)構(gòu)是使用JSON Schema定義的氨鹏∨纺迹可以在這里找到相應(yīng)的Schema定義。

datamodel(必須)

datamodel指向包含用GraphQL SDL編寫的類型定義的一個或多個.graphql文件仆抵。如果提供多個??文件跟继,CLI將在部署時簡單地拼接它們的內(nèi)容。

類型

datamodel屬性為一個字符串或一個字符串列表镣丑。

示例

數(shù)據(jù)模型在一個名為types.graphql的文件中定義舔糖。

datamodel: types.graphql

數(shù)據(jù)模型在兩個名為types.graphqlenums.graphl的文件中定義。部署時莺匠,兩個文件的內(nèi)容將通過CLI連接剩盒。

datamodel:
  - types.graphql
  - enums.graphql

endpoint(可選)

Prisma API的HTTP端點由以下組件組成:

  • Prisma server:承載您的Prisma API的服務(wù)器。
  • Workspace(僅Prisma Cloud):您通過Prisma Cloud配置的Workspace的名稱慨蛙。
  • Service name:Prism API的描述性名稱辽聊。
  • Stage: cluster的開發(fā)階段(例如,dev期贫,staging跟匆,prod)。

請注意通砍,endpoint實際上需要部署您的Prisma API玛臂。但是烤蜕,如果您在運行prisma deploy之前沒有在prisma.yml中指定它,CLI將使用向?qū)硖崾灸鷰讉€問題迹冤,并將端點添加到prisma.yml中讽营。

類型

endpoint屬性為一個字符串

示例

1.以下示例端點對此信息進(jìn)行編碼:

  • Prisma serverlocalhost:4466意味著您使用Docker在本地計算機(jī)上部署API(在端口4466上)泡徙。
  • Service namedefault橱鹏。
  • Stagedefault

注意:當(dāng)Service nameStage都設(shè)置為default時堪藐,它們可以省略莉兰,并由Prisma推斷。這意味著如下示例端點相當(dāng)于:http:// localhost:4466/

endpoint: http://localhost:4466/default/default

2.以下示例端點對此信息進(jìn)行編碼:

  • Prisma servereu1.prisma.sh意味著您使用Prisma Sandbox 部署Prisma API礁竞。
  • ** Workspace**:public-helixgoose-752是一個隨機(jī)生成的字符串糖荒,用于標(biāo)識Sandbox的Prisma Cloud工作區(qū)。
  • Service namemyservice模捂。
  • Stagedev捶朵。
endpoint: https://eu1.prisma.sh/public-helixgoose-752/myservice/dev

3.以下示例端點對此信息進(jìn)行編碼:

  • Prisma serverhttp://my-pr-Publi-1GXX8QUZU3T89-413349553.us-east-1.elb.amazonaws.com意味著您正在使用自定義服務(wù)器來部署您的Prism API。
  • ** Workspace**:public-helixgoose-752是一個隨機(jī)生成的字符串狂男,用于標(biāo)識Sandbox的Prisma Cloud工作區(qū)综看。
  • Service namecat-pictures
  • Stageprod并淋。
endpoint: http://my-pr-Publi-1GXX8QUZU3T89-413349553.us-east-1.elb.amazonaws.com/cat-pictures/prod

secret(可選)

secret用于生成(或簽名)認(rèn)證令牌(JWT)。其中一個身份驗證令牌需要附加到HTTP請求(位于Authorization頭字段中)珍昨。secret必須遵守這些要求:

  • 必須是utf8編碼的
  • 不得包含空格
  • 最長不得超過256個字符

請注意县耽,可以在此字符串中編碼多個secret,從而實現(xiàn)平滑的secret旋轉(zhuǎn)镣典。

在這里閱讀更多關(guān)于數(shù)據(jù)庫認(rèn)證兔毙。

警告:如果Prisma API沒有secret部署,它不需要驗證兄春。這意味著每個訪問端點的人都可以發(fā)送任意查詢和突變澎剥,因此可以讀取和寫入數(shù)據(jù)庫!

類型

secret屬性為一個字符串(不是字符串列表)赶舆。如果你想指定多個secret哑姚,用逗號分隔(空格被忽略),但仍然是一個字符串值芜茵。

示例

  1. 定義一個secret叙量,其值為moo4ahn3ahb4phein1eingaep
secret: moo4ahn3ahb4phein1eingaep
  1. 定義3個secret,其值分別為myFirstSecret, SECRET_NUMBER_23rd-secret九串,注意绞佩,第二個前的空格會被忽略
secret: myFirstSecret,    SECRET_NUMBER_2,3rd-secret
  1. 使用環(huán)境變量寺鸥,其名稱為MY_SECRET
secret: ${env:MY_SECRET}

subscriptions (訂閱,可選)

subscriptions屬性用于為您的Prisma服務(wù)定義所有訂閱webhook品山,其需要(至少)兩條信息:

  • subscriptions query定義應(yīng)在哪個事件中調(diào)用函數(shù)以及payload的樣子
  • 一旦事件發(fā)生胆建,通過HTTP調(diào)用的webhook的URL
  • (可選)附加到發(fā)送到URL的請求的HTTP頭

類型

subscriptions屬性是具有以下屬性的對象

  • query(必須):subscription query的文件路徑。
  • webhook(必須):關(guān)于要調(diào)用的webhook的信息(URL和可選的HTTP headers)肘交。如果沒有HTTP headers笆载,則可以直接向該屬性提供URL(請參閱下面的第一個示例)。否則酸些,webhook會接收另一個具有urlheaders屬性的對象(請參閱下面的第二個示例)宰译。

示例

  1. 事件訂閱沒有HTTP headers。
subscriptions:
  sendWelcomeEmail:
      query: database/subscriptions/sendWelcomeEmail.graphql
      webhook: https://bcdeaxokbj.execute-api.eu-west-1.amazonaws.com/dev/sendWelcomeEmail
  1. 事件訂閱指定兩個HTTP headers魄懂。
subscriptions:
  sendWelcomeEmail:
      query: database/subscriptions/sendWelcomeEmail.graphql
      webhook:
        url: https://bcdeaxokbj.execute-api.eu-west-1.amazonaws.com/dev/sendWelcomeEmail
        headers:
          Authorization: ${env:MY_ENDPOINT_SECRET}
          Content-Type: application/json

seed (種子數(shù)據(jù)沿侈,可選)

數(shù)據(jù)庫種子是用測試數(shù)據(jù)(或初始化數(shù)據(jù))填充服務(wù)的標(biāo)準(zhǔn)方式。

類型

seed屬性為一個對象市栗,具有以下兩個屬性之一:

  • import:在播種服務(wù)時導(dǎo)入數(shù)據(jù)的說明缀拭。參考兩種文件:
  • run:在種子服務(wù)時執(zhí)行時的shell命令填帽。這意味著不在導(dǎo)入范圍內(nèi)的更復(fù)雜的種子設(shè)置蛛淋。

注意:目前不支持run。請關(guān)注此提議篡腌。

首次部署服務(wù)時褐荷,會隱式執(zhí)行種子(除非使用--no-seed標(biāo)志顯式禁用)。請關(guān)注請求以獲取其他播種工作的workflows嘹悼。

示例

  1. 提供包含種子突變的.graphql文件:
seed:
  import: database/seed.graphql
  1. 使用NDF中的數(shù)據(jù)集引用.zip文件:
seed:
  import: database/backup.zip
  1. 播種時運行node腳本:
seed:
  run: node script.js

custom (自定義叛甫,可選)

custom屬性可以讓你指定任何你想在你的prisma.yml其他地方重用的值。因此它沒有預(yù)定義的結(jié)構(gòu)杨伙。您可以使用帶有self variable source的變量來引用值其监,例如:$ {self:custom.myVariable}。

類型

custom屬性為一個對象限匣。沒有對此對象的具體要求抖苦。

示例

定義兩個custom值并在subscriptions的定義中重新使用它們。

custom:
  serverlessEndpoint: https://bcdeaxokbj.execute-api.eu-west-1.amazonaws.com/dev
  subscriptionQueries: database/subscriptions/

subscriptions:
  sendWelcomeEmail:
    query: ${self:custom.subscriptionQueries}/sendWelcomeEmail.graphql
    webhook: https://${self:custom.serverlessEndpoint}/sendWelcomeEmail

hooks (鉤子米死,可選)

hooks屬性用于定義在特定命令之前或之后由Prisma CLI執(zhí)行的終端命令锌历。

當(dāng)前可用的鉤子如下:

  • post-deploy:將在prisma deploy命令后調(diào)用,即部署后調(diào)用峦筒。

類型

hooks屬性為一個對象辩涝。這些屬性與當(dāng)前可用的鉤子的名稱相匹配。

示例

以下是在執(zhí)行prisma deploy后執(zhí)行三項任務(wù)的示例:

  1. 輸出Deployment finished
  2. 下載.graphqlconfig.yml中指定的db項目的GraphQL schema
  3. 調(diào)用.graphqlconfig.yml中指定的代碼生成
hooks:
  post-deploy:
    - echo "Deployment finished"
    - graphql get-schema --project db
    - graphql prepare

請注意勘天,此設(shè)置假定.graphqlconfig.yml的有如下代碼:

projects:
  prisma:
    schemaPath: generated/prisma.graphql
    extensions:
      prisma: prisma.yml
      prepare-binding:
        output: generated/prisma.ts
        generator: prisma-ts
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末怔揩,一起剝皮案震驚了整個濱河市捉邢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌商膊,老刑警劉巖伏伐,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異晕拆,居然都是意外死亡藐翎,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門实幕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吝镣,“玉大人,你說我怎么就攤上這事昆庇∧┘郑” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵整吆,是天一觀的道長拱撵。 經(jīng)常有香客問我,道長表蝙,這世上最難降的妖魔是什么拴测? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮府蛇,結(jié)果婚禮上集索,老公的妹妹穿的比我還像新娘。我一直安慰自己汇跨,他們只是感情好务荆,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著扰法,像睡著了一般蛹含。 火紅的嫁衣襯著肌膚如雪毅厚。 梳的紋絲不亂的頭發(fā)上塞颁,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機(jī)與錄音吸耿,去河邊找鬼祠锣。 笑死,一個胖子當(dāng)著我的面吹牛咽安,可吹牛的內(nèi)容都是我干的伴网。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼妆棒,長吁一口氣:“原來是場噩夢啊……” “哼澡腾!你這毒婦竟也來了沸伏?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤动分,失蹤者是張志新(化名)和其女友劉穎毅糟,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體澜公,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡姆另,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了坟乾。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片迹辐。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖甚侣,靈堂內(nèi)的尸體忽然破棺而出明吩,到底是詐尸還是另有隱情,我是刑警寧澤渺绒,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布贺喝,位于F島的核電站,受9級特大地震影響宗兼,放射性物質(zhì)發(fā)生泄漏躏鱼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一殷绍、第九天 我趴在偏房一處隱蔽的房頂上張望染苛。 院中可真熱鬧,春花似錦主到、人聲如沸茶行。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽畔师。三九已至,卻和暖如春牧牢,著一層夾襖步出監(jiān)牢的瞬間看锉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工塔鳍, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留伯铣,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓轮纫,卻偏偏與公主長得像腔寡,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子掌唾,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 本文屬使用Prisma構(gòu)建GraphQL服務(wù)系列放前。 應(yīng)用層和數(shù)據(jù)庫層分離 兩個GraphQL API層 在使用Pr...
    guog閱讀 1,144評論 3 0
  • 本文屬使用Prisma構(gòu)建GraphQL服務(wù)系列忿磅。 本文介紹如何使用typescript開發(fā)prisma服務(wù)。將使...
    guog閱讀 2,891評論 0 2
  • 本文屬使用Prisma構(gòu)建GraphQL服務(wù)系列凭语。 每個GraphQL API的核心:GraphQL schema...
    guog閱讀 4,931評論 4 1
  • 本文屬使用Prisma構(gòu)建GraphQL服務(wù)系列贝乎。 當(dāng)搞定了GraphQL服務(wù)端開發(fā),且經(jīng)過充分測試叽粹,那么接著需要...
    guog閱讀 2,627評論 0 1
  • 本文屬使用Prisma構(gòu)建GraphQL服務(wù)系列览效。 本教程學(xué)習(xí)如何使用Prisma對數(shù)據(jù)庫生成GraphQL AP...
    guog閱讀 7,228評論 2 3