JSON at work: practical data integration for the web
Gespeichert in:
1. Verfasser: | |
---|---|
Format: | Buch |
Sprache: | English |
Veröffentlicht: |
Beijing ; Boston ; Farnham ; Sebastopol ; Tokyo
O'Reilly
July 2017
|
Ausgabe: | First edition |
Schlagworte: | |
Online-Zugang: | Inhaltsverzeichnis |
Beschreibung: | xx, 353 Seiten Illustrationen |
ISBN: | 9781449358327 |
Internformat
MARC
LEADER | 00000nam a2200000 c 4500 | ||
---|---|---|---|
001 | BV044373265 | ||
003 | DE-604 | ||
005 | 20180906 | ||
007 | t | ||
008 | 170628s2017 a||| |||| 00||| eng d | ||
020 | |a 9781449358327 |c pbk |9 978-1-4493-5832-7 | ||
035 | |a (OCoLC)1001528129 | ||
035 | |a (DE-599)BVBBV044373265 | ||
040 | |a DE-604 |b ger |e rda | ||
041 | 0 | |a eng | |
049 | |a DE-706 |a DE-11 |a DE-473 | ||
084 | |a ST 250 |0 (DE-625)143626: |2 rvk | ||
084 | |a ST 265 |0 (DE-625)143634: |2 rvk | ||
100 | 1 | |a Marrs, Tom |e Verfasser |4 aut | |
245 | 1 | 0 | |a JSON at work |b practical data integration for the web |c Tom Marrs |
250 | |a First edition | ||
264 | 1 | |a Beijing ; Boston ; Farnham ; Sebastopol ; Tokyo |b O'Reilly |c July 2017 | |
300 | |a xx, 353 Seiten |b Illustrationen | ||
336 | |b txt |2 rdacontent | ||
337 | |b n |2 rdamedia | ||
338 | |b nc |2 rdacarrier | ||
650 | 0 | 7 | |a MongoDB |0 (DE-588)7724020-0 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a JavaScript |0 (DE-588)4420180-1 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a JSON |0 (DE-588)1105592812 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Java |g Programmiersprache |0 (DE-588)4401313-9 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Hypermedia |0 (DE-588)4233581-4 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Ruby on Rails |0 (DE-588)7516633-1 |2 gnd |9 rswk-swf |
689 | 0 | 0 | |a JavaScript |0 (DE-588)4420180-1 |D s |
689 | 0 | 1 | |a Ruby on Rails |0 (DE-588)7516633-1 |D s |
689 | 0 | 2 | |a Hypermedia |0 (DE-588)4233581-4 |D s |
689 | 0 | 3 | |a MongoDB |0 (DE-588)7724020-0 |D s |
689 | 0 | 4 | |a Java |g Programmiersprache |0 (DE-588)4401313-9 |D s |
689 | 0 | 5 | |a JSON |0 (DE-588)1105592812 |D s |
689 | 0 | |5 DE-604 | |
776 | 0 | 8 | |i Erscheint auch als |n Online-Ausgabe, e-Book |z 978-1-4919-8241-9 |
856 | 4 | 2 | |m Digitalisierung UB Bamberg - ADAM Catalogue Enrichment |q application/pdf |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=029775638&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
999 | |a oai:aleph.bib-bvb.de:BVB01-029775638 |
Datensatz im Suchindex
_version_ | 1804177630194302976 |
---|---|
adam_text | Table of Contents
Preface............................................................................. xiii
Part I. JSON Overview and Platforms
1. JSON Overview........................................................3
JSON Is a Standard 3
A Brief Sample 4
Why JSON? 6
Core JSON 8
JSON Data Types 8
JSON Value Types 11
JSON Versions 14
JSON Comments 14
JSON File and MIME Type 14
JSON Style Guidelines 15
Our Example—MyConference 17
Our Technical Stack 17
Our Architectural Style—noBackEnd 17
Model JSON Data with JSON Editor Online 18
Generate Sample JSON Data with JSON Generator 20
Create and Deploy a Stub API 21
What We Covered? 24
What’s Next? 24
2. JSON in JavaScript..................................................25
Node.js Setup 25
JSON Serialization/Deserialization with JSON.stringifyQ and JSON.parseQ 26
The JSON Stringifier/Parser Object 26
JSON Serialization with Simple JavaScript Data Types 26
JSON Serialization with an Object and toJSON() 29
JSON Deserialization Using eval() 30
JSON Deserialization with an Object and JSON.parse() 31
JavaScript Objects and JSON 32
Node REPL 33
Where to Learn More About JavaScript Objects 35
Unit Testing with a Stub API 35
Unit Test Style—TDD and BDD 35
Just Enough Unit Testing with Mocha and Chai 36
Setting Up the Unit Test 36
Unirest 36
Test Data 37
Speakers Unit Test 37
Building a Small Web Application 39
Yeoman 39
Iteration 1—Generate a Web Application with Yeoman 41
Iteration 2—Make an HTTP Call with jQuery 45
Iteration 3—Consume Speaker Data from a Stub API and Use a Template 49
How to Go Deeper with JavaScript 54
What We Covered 55
What’s Next? 55
3. JSON in Ruby on Rails........................................................ 57
Ruby on Rails Setup 57
Ruby JSON Gems 58
JSON Serialization/Deserialization with Multijson 58
The Multijson Object 58
JSON Serialization/Deserialization with Simple Ruby Data Types 59
JSON Deserialization with Objects and Multijson 61
A Word on Camel Casing and JSON 63
JSON Serialization with Objects and ActiveSupport 64
JSON Deserialization with Objects and ActiveSupport 65
Unit Testing with a Stub API 66
Just Enough Unit Testing with Minitest 66
Setting Up the Unit Test 67
Test Data 68
J SON and Minitest Testing with APIs 68
Speakers Unit Test 68
Further Reading on Ruby and Minitest 72
What Is Missing in the Unit Tests? 73
vi | Table of Contents
Build a Small Web API with Ruby on Rails 73
Choose a JSON Serializer 73
speakers-api-1—Create an API with Camel-Cased JSON 75
speakers-api-2—Create an API that Customizes the JSON Representation 83
Further Reading on Rails and Rails-based APIs 84
What We Covered 85
What’s Next? 85
4. JSON in Java.............................................................. 87
Java and Gradle Setup 87
Gradle Overview 87
Just Enough Unit Testing with JUnit 89
Java-Based JSON Libraries 89
JSON Serialization/Deserialization with Jackson 90
Serialization/Deserialization with Simple Java Data Types 90
Serialization/Deserialization with Java Objects 93
Unit Testing with a Stub API 98
Test Data 98
JSON and JUnit Testing with APIs 98
Build a Small Web API with Spring Boot 103
Create the Model 103
Create the Controller 105
Register the Application 107
Write the Build Script 107
Deploy the API 109
Test the API with Postman 110
What We Covered 111
What’s Next? 112
Part II. The JSON Ecosystem
5. JSON Schema..................................................... 115
JSON Schema Overview 115
What Is JSON Schema? 115
Syntactic Versus Semantic Validation 116
A Simple Example 116
JSON Schema on the Web 117
Why JSON Schema? 118
My Journey with JSON Schema 119
The Current State of the JSON Schema Standard 119
JSON Schema and XML Schema 119
Table of Contents | vii
Core JSON Schema—Basics and Tooling 120
JSON Schema Workflow and Tooling 120
Core Keywords 122
Basic Types 123
Numbers 127
Arrays 128
Enumerated Values 130
Objects 131
Pattern Properties 133
Regular Expressions 135
Dependent Properties 137
Internal References 138
External References 140
Choosing Validation Rules 143
How to Design and Test an API with JSON Schema 148
Our Scenario 148
Model a JSON Document 148
Generate a JSON Schema 150
Validate the JSON Document 153
Generate Sample Data 154
Deploy a Stub API with json-server 157
Final Thoughts on API Design and Testing with JSON Schema 159
Validation Using a JSON Schema Library 159
Where to Go Deeper with JSON Schema 160
What We Covered 160
What’s Next? 160
6. JSON Search.......................................................... 161
Why JSON Search? 161
JSON Search Libraries and Tools 162
Honorable Mention 162
What to Look For 162
Test Data 163
Setting Up Unit Tests 164
Comparing JSON Search Libraries and Tools 165
JSONPath 165
JSON Pointer 172
jq 176
JSON Search Library and Tool Evaluations—The Bottom Line 187
What We Covered 188
What’s Next? 188
viii | Table of Contents
7. JSON Transform................................................... 189
Types of JSON Transformation 189
What to Look For in a JSON Transform Library 190
Test Input Data 191
JSON-to-HTML Transformation 193
Target HTML Document 193
Mustache 194
Handlebars 200
JSON-to-HTML Transformation Evaluations—The Bottom Line 206
JSON-to-JSON Transform 206
The Issues 207
JSON-to-JSON Transform Libraries 207
Honorable Mention 207
Target JSON Output 208
JSON Patch 209
JSON-T 215
Mustache 219
Handlebars 221
JSON-to-JSON Transformation Evaluations—The Bottom Line 223
JSON-XML Transformation 224
JSON-XML Transformation Conventions 224
The Issues with JSON-XML Transformation Conventions 233
XML-JSON Transform—The Bottom Line 233
J SON -XML Transformation Unit Test 235
What We Covered 237
What’s Next? 237
Part III. JSON in the Enterprise
8. JSON and Hypermedia............................................. 241
Comparing Hypermedia Formats 242
Defining Key Terms 243
My Opinion on Hypermedia 243
Siren 244
JSON-LD 246
Collection+JSON 251
json:api 252
HAL 256
Conclusions on Hypermedia 261
Recommendations for Working with Hypermedia 262
Practical Issues with Hypermedia 262
Table of Contents | ix
Testing with HAL in the Speakers API 263
Test Data 263
HAL Unit Test 265
Server-Side HAL 269
Going Deeper with Hypermedia 270
What We Covered 270
What’s Next? 270
9. JSONandMongoDB..................................................271
What About BSON? 271
MongoDB Setup 272
MongoDB Server and Tools 272
MongoDB Server 273
Importing JSON into MongoDB 274
MongoDB Command Shell 275
Basic CRUD with mongo 276
Exporting from MongoDB to a JSON Document 279
What About Schema? 282
RESTful API Testing with MongoDB 283
Test Input Data 284
Providing a RESTful Wrapper for MongoDB 284
What We Covered 287
What’s Next? 287
10. JSON Messaging with Kafka........................................289
Kafka Use Cases 290
Kafka Concepts and Terminology 290
The Kafka Ecosystem—Related Projects 291
Kafka Environment Setup 292
Why Do I Need ZooKeeper? 292
Kafka Command-Line Interface (CLI) 293
How to Publish a JSON Message with the CLI 293
Start ZooKeeper 293
Start Kafka 294
Create a Topic 294
List Topics 295
Start a Consumer 295
Publish a JSON Message 296
Consume a JSON Message 297
Clean Up and Shut Down Kafka 297
Kafka Libraries 299
End-to-End Example—Speaker Proposals at MyConference 299
x | Table of Contents
Test Data 299
Architecture Components 301
Set Up the Kafka Environment 302
Set Up Fake Email Server and Client—MailCatcher 303
Set Up Node.js Project Environment 304
Speaker Proposal Producer (Send Speaker Proposals) 304
Proposal Reviewer (Consumer/Producer) 304
Speaker Notifier (Consumer) 310
Review Notification Email Messages with MailCatcher 315
What We Covered 317
A. Installation Guides....................................................319
B. JSON Community........................................................ 337
Index.................................................................... 339
Table of Contents | xi
|
any_adam_object | 1 |
author | Marrs, Tom |
author_facet | Marrs, Tom |
author_role | aut |
author_sort | Marrs, Tom |
author_variant | t m tm |
building | Verbundindex |
bvnumber | BV044373265 |
classification_rvk | ST 250 ST 265 |
ctrlnum | (OCoLC)1001528129 (DE-599)BVBBV044373265 |
discipline | Informatik |
edition | First edition |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>01962nam a2200469 c 4500</leader><controlfield tag="001">BV044373265</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20180906 </controlfield><controlfield tag="007">t</controlfield><controlfield tag="008">170628s2017 a||| |||| 00||| eng d</controlfield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9781449358327</subfield><subfield code="c">pbk</subfield><subfield code="9">978-1-4493-5832-7</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)1001528129</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)BVBBV044373265</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield><subfield code="e">rda</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">eng</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-706</subfield><subfield code="a">DE-11</subfield><subfield code="a">DE-473</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 250</subfield><subfield code="0">(DE-625)143626:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 265</subfield><subfield code="0">(DE-625)143634:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Marrs, Tom</subfield><subfield code="e">Verfasser</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">JSON at work</subfield><subfield code="b">practical data integration for the web</subfield><subfield code="c">Tom Marrs</subfield></datafield><datafield tag="250" ind1=" " ind2=" "><subfield code="a">First edition</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Beijing ; Boston ; Farnham ; Sebastopol ; Tokyo</subfield><subfield code="b">O'Reilly</subfield><subfield code="c">July 2017</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">xx, 353 Seiten</subfield><subfield code="b">Illustrationen</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="b">n</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="b">nc</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">MongoDB</subfield><subfield code="0">(DE-588)7724020-0</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">JavaScript</subfield><subfield code="0">(DE-588)4420180-1</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">JSON</subfield><subfield code="0">(DE-588)1105592812</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Java</subfield><subfield code="g">Programmiersprache</subfield><subfield code="0">(DE-588)4401313-9</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Hypermedia</subfield><subfield code="0">(DE-588)4233581-4</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Ruby on Rails</subfield><subfield code="0">(DE-588)7516633-1</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="689" ind1="0" ind2="0"><subfield code="a">JavaScript</subfield><subfield code="0">(DE-588)4420180-1</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2="1"><subfield code="a">Ruby on Rails</subfield><subfield code="0">(DE-588)7516633-1</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2="2"><subfield code="a">Hypermedia</subfield><subfield code="0">(DE-588)4233581-4</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2="3"><subfield code="a">MongoDB</subfield><subfield code="0">(DE-588)7724020-0</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2="4"><subfield code="a">Java</subfield><subfield code="g">Programmiersprache</subfield><subfield code="0">(DE-588)4401313-9</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2="5"><subfield code="a">JSON</subfield><subfield code="0">(DE-588)1105592812</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="776" ind1="0" ind2="8"><subfield code="i">Erscheint auch als</subfield><subfield code="n">Online-Ausgabe, e-Book</subfield><subfield code="z">978-1-4919-8241-9</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">Digitalisierung UB Bamberg - ADAM Catalogue Enrichment</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=029775638&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="999" ind1=" " ind2=" "><subfield code="a">oai:aleph.bib-bvb.de:BVB01-029775638</subfield></datafield></record></collection> |
id | DE-604.BV044373265 |
illustrated | Illustrated |
indexdate | 2024-07-10T07:51:08Z |
institution | BVB |
isbn | 9781449358327 |
language | English |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-029775638 |
oclc_num | 1001528129 |
open_access_boolean | |
owner | DE-706 DE-11 DE-473 DE-BY-UBG |
owner_facet | DE-706 DE-11 DE-473 DE-BY-UBG |
physical | xx, 353 Seiten Illustrationen |
publishDate | 2017 |
publishDateSearch | 2017 |
publishDateSort | 2017 |
publisher | O'Reilly |
record_format | marc |
spelling | Marrs, Tom Verfasser aut JSON at work practical data integration for the web Tom Marrs First edition Beijing ; Boston ; Farnham ; Sebastopol ; Tokyo O'Reilly July 2017 xx, 353 Seiten Illustrationen txt rdacontent n rdamedia nc rdacarrier MongoDB (DE-588)7724020-0 gnd rswk-swf JavaScript (DE-588)4420180-1 gnd rswk-swf JSON (DE-588)1105592812 gnd rswk-swf Java Programmiersprache (DE-588)4401313-9 gnd rswk-swf Hypermedia (DE-588)4233581-4 gnd rswk-swf Ruby on Rails (DE-588)7516633-1 gnd rswk-swf JavaScript (DE-588)4420180-1 s Ruby on Rails (DE-588)7516633-1 s Hypermedia (DE-588)4233581-4 s MongoDB (DE-588)7724020-0 s Java Programmiersprache (DE-588)4401313-9 s JSON (DE-588)1105592812 s DE-604 Erscheint auch als Online-Ausgabe, e-Book 978-1-4919-8241-9 Digitalisierung UB Bamberg - ADAM Catalogue Enrichment application/pdf http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=029775638&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA Inhaltsverzeichnis |
spellingShingle | Marrs, Tom JSON at work practical data integration for the web MongoDB (DE-588)7724020-0 gnd JavaScript (DE-588)4420180-1 gnd JSON (DE-588)1105592812 gnd Java Programmiersprache (DE-588)4401313-9 gnd Hypermedia (DE-588)4233581-4 gnd Ruby on Rails (DE-588)7516633-1 gnd |
subject_GND | (DE-588)7724020-0 (DE-588)4420180-1 (DE-588)1105592812 (DE-588)4401313-9 (DE-588)4233581-4 (DE-588)7516633-1 |
title | JSON at work practical data integration for the web |
title_auth | JSON at work practical data integration for the web |
title_exact_search | JSON at work practical data integration for the web |
title_full | JSON at work practical data integration for the web Tom Marrs |
title_fullStr | JSON at work practical data integration for the web Tom Marrs |
title_full_unstemmed | JSON at work practical data integration for the web Tom Marrs |
title_short | JSON at work |
title_sort | json at work practical data integration for the web |
title_sub | practical data integration for the web |
topic | MongoDB (DE-588)7724020-0 gnd JavaScript (DE-588)4420180-1 gnd JSON (DE-588)1105592812 gnd Java Programmiersprache (DE-588)4401313-9 gnd Hypermedia (DE-588)4233581-4 gnd Ruby on Rails (DE-588)7516633-1 gnd |
topic_facet | MongoDB JavaScript JSON Java Programmiersprache Hypermedia Ruby on Rails |
url | http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=029775638&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |
work_keys_str_mv | AT marrstom jsonatworkpracticaldataintegrationfortheweb |