SlideShare uma empresa Scribd logo
1 de 54
Baixar para ler offline
vte.cxの基礎知識
アカウント登録〜Hello	Worldまで	
Qiitaの記事に説明が書いてあるので、そちらを見ながら行っていきます。	
「Qiita アカウント登録〜Hello	Worldまで」	
と検索
記事を見ながら説明
Hello	Worldが表示できたら説明
vte.cxのデータ構造と階層	
vte.cxではどのようなデータ構造でどのようなデータ管理を行っているのか
データはURLベースでアクセスする
リソースデータへのアクセスの仕方	
h2ps://{自分のサービス}.vte.cx/d/hoge	
URLパスの基本形	
これで「/hoge」データにアクセスできる	
「/hoge」データを登録していた場合
URLのパスは基本的に「/d」から始まる	
  ○○○○データにアクセスする場合:	
    h8ps://{自分のサービス}.vte.cx	/d	/○○○○	
	
  ××××データにアクセスする場合:	
    h8ps://{自分のサービス}.vte.cx	/d	/××××
URLのパスは基本的に「/d」から始まる	
/dはデータにアクセスするためのAPI	
「/d」としているのは対象がリソースデータであることを示す意味があります。	
  ○○○○データにアクセスする場合:	
    h8ps://{自分のサービス}.vte.cx	/d	/○○○○	
	
  ××××データにアクセスする場合:	
    h8ps://{自分のサービス}.vte.cx	/d	/××××
データはディレクトリ構造で	
成り立って、自由に構築できる
ディレクトリ構造の例	
h8p://{自分のサービス}.vte.cx/d	
	/hoge	
																																/hoge1	
																																/hoge2	
	/foo	
																																/foo1	
																																																													/foo1_child1	
																																																													/foo1_child2	
																																/foo2
ディレクトリ構造の例	
h8p://{自分のサービス}.vte.cx/d	
	/hoge	
																																/hoge1	
																																/hoge2	
	/foo	
																																/foo1	
																																																													/foo1_child1	
																																																													/foo1_child2	
																																/foo2	
こういったディレクトリ構造を	
自由に構築できます
データの形式は	
どうなっているのか?
データの形式はATOM(RFC4287)によって表現される	
<feed>	
				<entry>	
								<author>	
	 <uri>urn:vte.cx:created:20</uri>	
								</author>	
								<id>/_group,1</id>	
							<link	href="/_group"	rel="self"/>	
							<published>2015-12-01T13:39:26.919+09:00</published>	
							<updated>2015-12-01T13:39:26.919+09:00</updated>	
				</entry>	
</feed>
データの形式はATOM(RFC4287)によって表現されます	
Feed項目(一覧)	
Entry項目(1個)	
データ情報	
<feed>	
				<entry>	
								<author>	
	 <uri>urn:vte.cx:created:20</uri>	
								</author>	
								<id>/_group,1</id>	
							<link	href="/_group"	rel="self"/>	
							<published>2015-12-01T13:39:26.919+09:00</published>	
							<updated>2015-12-01T13:39:26.919+09:00</updated>	
				</entry>	
				<entry>	
				</entry>	
</feed>	
Entry項目(n個)
<feed>	
				<entry>	
								fooデータ	
			</entry>	
</feed>	
<feed>	
				<entry>	
								/hoge/hoge1データ	
			</entry>	
</feed>	
<feed>	
				<entry>	
								hogeデータ	
			</entry>	
</feed>	
全体の構造をまとめると	
h8p://{自分のサービス}.vte.cx/d	
/hoge	
/hoge1	
/foo
実際にデータにアクセスしてみる
下記のURLをブラウザで開いてみてください	
h8ps://{自分のサービス}.vte.cx/d/_group?x 
下記のURLをブラウザで開いてみてください	
h8ps://{自分のサービス}.vte.cx/d/_group?x 	
<feed>	
				<entry>	
								<author>	
	 <uri>urn:vte.cx:created:20</uri>	
								</author>	
								<id>/_group,1</id>	
							<link	href="/_group"	rel="self"/>	
							<published>2015-12-01T13:39:26.919+09:00</published>	
							<updated>2015-12-01T13:39:26.919+09:00</updated>	
				</entry>	
</feed>
下記のURLをブラウザで開いてみてください	
h8ps://{自分のサービス}.vte.cx/d/_group?x 	
<feed>	
				<entry>	
								<author>	
	 <uri>urn:vte.cx:created:20</uri>	
								</author>	
								<id>/_group,1</id>	
							<link	href="/_group"	rel="self"/>	
							<published>2015-12-01T13:39:26.919+09:00</published>	
							<updated>2015-12-01T13:39:26.919+09:00</updated>	
				</entry>	
</feed>
ちなみに	
h8ps://{自分のサービス}.vte.cx/d/_group	
URLになにもパラメータをつけないとJSON形式で取得できます。	
セキュリティ上、ブラウザで表示はできませんが、	
JavascriptではJSON形式で確認することができます。
クライアントから通信する方法
Ajax通信でアクセスする	
クライアント側からサーバーにアクセスする場合は、Ajax通信を行います。	
Ajax通信とは、クライアントとサーバー間の通信を行う標準的な方法です。	
サーバー	クライアント	
Ajax通信	
リクエスト	
レスポンス
jQueryでサーバにデータ登録する
データの登録方法には2種類ある	
①キーを自動採番して登録	
	
②キーを指定して登録
POSTリクエストのデモページ	
自動採番する登録:	
h8ps://test.1.vte.cx/post.html	
	
	
	
キーを指定して登録	
h8ps://test.1.vte.cx/post2.html
自動採番とは
自動採番とはサービスで一意の識別番号	
・文字どおり、サーバがデータに自動的に付与する番号(キー)です。	
	
・データを登録した時にそのURLが重複しないようにサーバー側で	
 他のデータと重複しない一意の番号が割り振られます。	
	
・指定された登録先の配下に自動番号が付与されたデータが登録されます。	
/hoge	 ここを登録先とする	
/1-1-1-1231231	
/1-1-1-1287911	
/hoge配下に	
自動採番された
データが登録さ
れる
キーを指定して登録する方法
キーを指定して登録するおさらい	
・キーを指定して登録する場合は、自分でデータに名前(キー)をつける	
	
・データのキーはlink項目のhref属性に入力し、rel属性をselfとする	
	
・同じ階層に同じ名前があった場合はエラーとなる	
/hoge	
/test	
/abcde	
Link項目のhref属性が「/hoge」	
Link項目のhref属性が「/test」	
Link項目のhref属性が「/abcde」
jQueryでデータを取得する
データの取得方法には2種類ある	
① 単体を取得する	
	
②	一覧を取得する
GETリクエストのデモページ	
h8ps://test.1.vte.cx/get.html
データ取得のおさらい	
・単体データを取得する場合は「?e」パラメータを使用する	
	
・一覧を取得したい場合は、「?f」パラメータを使用する	
	
GET			/hoge?e	 hogeデータの単体取得	
hoge配下のデータ一覧取得	GET			/hoge?f
jQueryでデータを更新する
データの更新方法には2種類ある	
① 楽観的排他をする更新	
	
② 楽観的排他をしない更新
PUTリクエストのデモページ	
楽観的排他をする更新:	
h8ps://test.1.vte.cx/put.html	
	
	
	
楽観的排他をしない更新	
h8ps://test.1.vte.cx/put2.html
データ更新のおさらい	
・データの更新先はlink項目のrel=“self”を参照している	
	
・更新の際は、id項目のリビジョン管理を行っており、サーバと不一致な場合、	
 楽観的排他が発生する	
	
・id項目を省略し、強制的に更新も行えるが、楽観的排他をすることを	
 推奨する。	
	
リクエストのid:	/hoge,	1	
更新成功	
サーバのid:					/hoge,	1	
リビジョン番号が一致
jQueryでデータを削除する
データの削除方法には3種類ある	
① 一件削除	
	
② 全件削除
DELETEリクエストのデモページ	
一件削除:	
h8ps://test.1.vte.cx/delete.html	
	
	
	
全件削除	
h8ps://test.1.vte.cx/delete2.html
では、このような子供がいるデータ一覧
を削除したい場合はどうすればいいか
データ削除のおさらい	
・一件削除にも楽観的排他を行う方法と行わない方法がある	
	
・全件削除したい場合は「?_rf」を使用する	
	
一件削除:		DELETE	/d/hoge	
	
全件削除:	DELETE	/d/hoge?_rf
これでjQueryを使ったデータの操作
方法については終わりです
スキーマについて
スキーマとは	
・ 自分が決めた項目名に値を入れて保存したい	
	
・ スキーマを定義することで任意の項目に	
				任意のデータを保存することが可能	
	
・ データの設計図の役割	
	
・		IndexやACLなどをサーバで管理
スキーマの形	
userinfo	
	id(int)	
	email	
favorite	
	food!=^.{3}$	
	music=^.{5}$	
hobby{}	
	type	
	name	
	updated(date)	
スキーマの形
スキーマの形	
userinfo	
	id(int)	
	email	
favorite	
	food!=^.{3}$	
	music=^.{5}$	
hobby{}	
	type	
	name	
	updated(date)	
スキーマの形	
サーバに登録すると
スキーマの形	
userinfo	
	id(int)	
	email	
favorite	
	food!=^.{3}$	
	music=^.{5}$	
hobby{}	
	type	
	name	
	updated(date)	
スキーマの形	
<feed>	
	<entry>	
	 <userinfo>	
								<id></id>	
								<email></email>	
					</userinfo>	
					<favorite>	
									<food></food>	
									<music></music>	
					</favorite>		
					…..	
</entry>	
</feed>	
このようなデータが登録できる
ようになる	
サーバに登録すると
スキーマの登録方法	
vtecblankプロジェクト	
	
									/setup	
															
																	/_serngs	
	
																								template
スキーマの登録方法	
vtecblankプロジェクト	
	
									/setup	
															
																	/_serngs	
	
																								template	
<feed>	
		<entry>	
				<link	href="/_serngs/template"	rel="self"/>	
				<contributor>	
						<uri>urn:vte.cx:acl:/_group/$admin,CRUD</uri>	
				</contributor>	
				<contributor>	
						<uri>urn:vte.cx:acl:+,R</uri>	
				</contributor>	
<content	type="text/html">userinfo	
	id(int)	
	email	
favorite	
	food!=^.{3}$	
	music=^.{5}$	
hobby{}	
	type	
	name	
	updated(date)	
</content>	
<rights>	
userinfo.id:/.+/registrason	
</rights>	
</entry>	
</feed>
スキーマの登録方法	
vtecblankプロジェクト	
	
									/setup	
															
																	/_serngs	
	
																								template	
<feed>	
		<entry>	
				<link	href="/_serngs/template"	rel="self"/>	
				<contributor>	
						<uri>urn:vte.cx:acl:/_group/$admin,CRUD</uri>	
				</contributor>	
				<contributor>	
						<uri>urn:vte.cx:acl:+,R</uri>	
				</contributor>	
<content	type="text/html">userinfo	
	id(int)	
	email	
favorite	
	food!=^.{3}$	
	music=^.{5}$	
hobby{}	
	type	
	name	
	updated(date)	
</content>	
<rights>	
userinfo.id:/.+/registrason	
</rights>	
</entry>	
</feed>
スキーマについては記事を参照してください	
スキーマには項目名にバリデーションやindexをつけることもできます。	
非常に便利な機能ですので、是非使用してみてください。	
「Qiita vte.cx スキーマ定義」で検索
以上で終わります。	
また、ここでは時間の関係上、説明しきれていない大事な情報がたくさんあります。	
「vte.cx	Advent	Calendar	2015」で検索	
ご静聴ありがとうございました。

Mais conteúdo relacionado

Mais de Shinichiro Takezaki (20)

Vtecx solution
Vtecx solutionVtecx solution
Vtecx solution
 
Lt20190129
Lt20190129Lt20190129
Lt20190129
 
Real techlt20180829
Real techlt20180829Real techlt20180829
Real techlt20180829
 
Bpstudy20180725
Bpstudy20180725Bpstudy20180725
Bpstudy20180725
 
11 29プレゼン資料
11 29プレゼン資料11 29プレゼン資料
11 29プレゼン資料
 
React vtecx20171129
React vtecx20171129React vtecx20171129
React vtecx20171129
 
20171025 date picker説明資料
20171025 date picker説明資料20171025 date picker説明資料
20171025 date picker説明資料
 
React vtecx20171025
React vtecx20171025React vtecx20171025
React vtecx20171025
 
Web study20171007
Web study20171007Web study20171007
Web study20171007
 
React vtecx20170920
React vtecx20170920React vtecx20170920
React vtecx20170920
 
React vtecx20170822
React vtecx20170822React vtecx20170822
React vtecx20170822
 
Builderscon Tokyo 2017
Builderscon Tokyo 2017 Builderscon Tokyo 2017
Builderscon Tokyo 2017
 
Vtecx20151216
Vtecx20151216Vtecx20151216
Vtecx20151216
 
Vtecxlt20151201
Vtecxlt20151201Vtecxlt20151201
Vtecxlt20151201
 
Angularreflex20141210
Angularreflex20141210Angularreflex20141210
Angularreflex20141210
 
No nosql20130424
No nosql20130424No nosql20130424
No nosql20130424
 
BPStudy20121221
BPStudy20121221BPStudy20121221
BPStudy20121221
 
Gaeja20121130
Gaeja20121130Gaeja20121130
Gaeja20121130
 
Reflex works20120818 1
Reflex works20120818 1Reflex works20120818 1
Reflex works20120818 1
 
Groovyコンファレンス
GroovyコンファレンスGroovyコンファレンス
Groovyコンファレンス
 

Vtecx20151216 2