mirror of https://github.com/grpc/grpc.io.git
				
				
				
			Cleanup: make title capitalization consistent with guidelines (#417)
* Fix title case for Quick start * Fix title case for tutorials * Use relative path to basics tutorial from qc * Avoid unnecessary redirects
This commit is contained in:
		
							parent
							
								
									f5a68c2771
								
							
						
					
					
						commit
						0ba07a5c61
					
				|  | @ -4,6 +4,7 @@ | |||
|     // Workspace dictionary: | ||||
|     "words": [ | ||||
|         "backends", | ||||
|         "Bazel", | ||||
|         "boringssl", | ||||
|         "charsets", | ||||
|         "CNCF", | ||||
|  | @ -29,9 +30,12 @@ | |||
|         "SDKs", | ||||
|         "subchannel", | ||||
|         "subchannels", | ||||
|         "submodule", | ||||
|         "submodules", | ||||
|         "threadsafe", | ||||
|         "unmarshalling" | ||||
|         "unencrypted", | ||||
|         "unmarshalling", | ||||
|         "Xcode" | ||||
|     ], | ||||
|     "flagWords": [], | ||||
|     "ignoreWords": [ | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| # The gRPC website and documentation | ||||
| 
 | ||||
| This repository houses the assets used to build and deploy the gRPC website, available at https://grpc.io. The site is built using the [Hugo](https://gohugo.io) static site generator. Check out the [Hugo Quick Start](https://gohugo.io/getting-started/quick-start/) for a quick intro. | ||||
| This repository houses the assets used to build and deploy the gRPC website, available at https://grpc.io. The site is built using the [Hugo](https://gohugo.io) static site generator. Check out the [Hugo quick start](https://gohugo.io/getting-started/quick-start/) for a quick intro. | ||||
| 
 | ||||
| ## Prerequisites | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										18
									
								
								config.yaml
								
								
								
								
							
							
						
						
									
										18
									
								
								config.yaml
								
								
								
								
							|  | @ -74,32 +74,32 @@ outputs: | |||
| menu: | ||||
|   main: | ||||
|     - name: About | ||||
|       url: /about | ||||
|       url: /about/ | ||||
|       weight: 1 | ||||
|     - name: Docs | ||||
|       url: /docs | ||||
|       url: /docs/ | ||||
|       identifier: docs | ||||
|       weight: 2 | ||||
|     - name: Blog | ||||
|       url: /blog | ||||
|       url: /blog/ | ||||
|       weight: 4 | ||||
|     - name: Community | ||||
|       url: /community | ||||
|       url: /community/ | ||||
|       weight: 5 | ||||
|     - name: Overview | ||||
|       url: /docs | ||||
|       url: /docs/ | ||||
|       weight: 1 | ||||
|       parent: docs | ||||
|     - name: What is gRPC? | ||||
|       url: /docs/what-is-grpc | ||||
|       url: /docs/what-is-grpc/ | ||||
|       weight: 1 | ||||
|       parent: docs | ||||
|     - name: Languages | ||||
|       url: /docs/languages | ||||
|       url: /docs/languages/ | ||||
|       weight: 2 | ||||
|       parent: docs | ||||
|     - name: Guides | ||||
|       url: /docs/guides | ||||
|       url: /docs/guides/ | ||||
|       identifier: guides | ||||
|       weight: 4 | ||||
|       parent: docs | ||||
|  | @ -108,6 +108,6 @@ menu: | |||
|       weight: 6 | ||||
|       parent: docs | ||||
|     - name: FAQ | ||||
|       url: /faq | ||||
|       url: /faq/ | ||||
|       weight: 7 | ||||
|       parent: docs | ||||
|  |  | |||
|  | @ -44,11 +44,11 @@ Google to power use cases from microservices to the "last mile" of computing | |||
| (mobile, web, and Internet of Things). | ||||
| 
 | ||||
| For more background on why we created gRPC, see the [gRPC Motivation and Design | ||||
| Principles](/blog/principles) on the [gRPC blog](/blog). | ||||
| Principles](/blog/principles/) on the [gRPC blog](/blog/). | ||||
| 
 | ||||
| {{< note >}} | ||||
|   <a name="officially-supported-languages-and-platforms"></a> | ||||
| 
 | ||||
|   Our table of **officially supported languages and platforms** has moved! | ||||
|   See [Supported languages and platforms](/docs/languages#official-support). | ||||
|   See [Supported languages and platforms](/docs/languages/#official-support). | ||||
| {{< /note >}} | ||||
|  | @ -11,9 +11,9 @@ The gRPC team is excited to announce the immediate availability of gRPC Beta. Th | |||
| We’re also taking a big step forward in improving the installation process. Over the past few weeks we’ve rolled out gRPC packages to <a href="https://packages.debian.org/jessie-backports/libgrpc0">Debian Stable/Backports</a>. Installation in most cases is now a two line install using the Debian package and available language specific package managers (<a href="https://search.maven.org/#artifactdetails%7Cio.grpc%7Cgrpc-core%7C0.9.0%7Cjar">maven</a>, <a href="https://pypi.python.org/pypi/grpcio">pip</a>, <a href="https://rubygems.org/gems/grpc">gem</a>, <a href="https://packagist.org/packages/grpc/grpc">composer</a>, <a href="https://pecl.php.net/package/gRPC">pecl</a>, <a href="https://www.npmjs.com/package/grpc">npm</a>, <a href="https://www.nuget.org/packages/Grpc/">nuget</a>, [pod](https://cocoapods.org/pods/gRPC)). In addition [gRPC docker images](https://hub.docker.com/r/grpc) are now available on Docker Hub. | ||||
| 
 | ||||
| 
 | ||||
| We’ve updated the [documentation](/docs) on grpc.io to reflect the latest changes and released additional language-specific [reference docs](/docs/reference). See what’s changed with the Beta release in the release notes on GitHub for [Java](https://github.com/grpc/grpc-java/releases/tag/v0.9.0), [Go](https://godoc.org/google.golang.org/grpc), and [all other](https://github.com/grpc/grpc/releases/tag/release-0_11_0) languages. | ||||
| We’ve updated the [documentation](/docs/) on grpc.io to reflect the latest changes and released additional language-specific [reference docs](/docs/languages/). See what’s changed with the Beta release in the release notes on GitHub for [Java](https://github.com/grpc/grpc-java/releases/tag/v0.9.0), [Go](https://godoc.org/google.golang.org/grpc), and [all other](https://github.com/grpc/grpc/releases/tag/release-0_11_0) languages. | ||||
| 
 | ||||
| In keeping in line with our [principles](../principles) and goal to enable highly performant and scalable APIs and microservices on top of HTTP/2, in the coming months, the focus of the gRPC project will be to keep improving performance and stability and adding carefully chosen features for production use cases. Documentation will also be clarified and will continue to improve with new examples and guides. | ||||
| In keeping in line with our [principles](../principles/) and goal to enable highly performant and scalable APIs and microservices on top of HTTP/2, in the coming months, the focus of the gRPC project will be to keep improving performance and stability and adding carefully chosen features for production use cases. Documentation will also be clarified and will continue to improve with new examples and guides. | ||||
| 
 | ||||
| 
 | ||||
| We’ve been very excited to see the community response to gRPC and the various projects starting to use it ([etcd v3 experimental API](https://coreos.com/blog/etcd-2.2), [grpc-gateway](https://github.com/gengo/grpc-gateway) for RESTful APIs and others). | ||||
|  |  | |||
|  | @ -27,7 +27,7 @@ In gRPC, both the client and server make their own independent and local determi | |||
| 
 | ||||
| As a client you should always set a deadline for how long you are willing to | ||||
| wait for a reply from the server. Here are examples using the Greeting service | ||||
| from the [Quick Start](/docs/quickstart/) pages: | ||||
| from the [Quick start](/docs/quickstart/) pages: | ||||
| 
 | ||||
| ### C++ | ||||
| 
 | ||||
|  |  | |||
|  | @ -15,7 +15,7 @@ Languages moving to 1.0 include C++, Java, Go, Node, Ruby, Python and C# across | |||
| 
 | ||||
| We are very excited about the progress we have made so far and would like to thank all our users and contributors. First announced in March 2015 with [Square](https://corner.squareup.com/2015/02/grpc.html), gRPC is already being used in many open source projects like [etcd](https://github.com/coreos/etcd) from CoreOS, [containerd](https://github.com/docker/containerd) from Docker, [cockroachdb](https://github.com/cockroachdb/cockroach) from Cockroach Labs, and by many other companies like [Vendasta](https://vendasta.com), [Netflix](https://github.com/Netflix/ribbon), [YikYak](http://yikyakapp.com) and [Carbon 3d](http://carbon3d.com).  Outside of microservices, telecom giants like [Cisco](https://github.com/CiscoDevNet/grpc-getting-started), [Juniper](https://github.com/Juniper/open-nti), [Arista](https://github.com/aristanetworks/goarista), and Ciena, are building support for streaming telemetry and network configuration from their network devices using gRPC, as part of [OpenConfig](http://www.openconfig.net/) effort. | ||||
| 
 | ||||
| From the beta release, we have made significant strides in the areas of usability, interoperability, and performance measurement on the [road to 1.0](https://www.youtube.com/watch?v=_vfbVJ_u5mE). In most of the languages, the [installation of the gRPC runtime](/blog/installation) as well as setup of a development environment is a single command. Beyond installation, we have set up automated tests for gRPC across languages and RPC types in order to stress test our APIs and ensure interoperability. There is now a [performance dashboard](https://goo.gl/tHPEfD) available in the open to see latency and throughput for unary and streaming ping pong for various languages. Other measurements have shown significant gains from using gRPC/Protobuf instead of HTTP/JSON such as in [CoreOS blogpost](https://blog.gopheracademy.com/advent-2015/etcd-distributed-key-value-store-with-grpc-http2/) and in [Google Cloud PubSub testing](https://cloud.google.com/blog/big-data/2016/03/announcing-grpc-alpha-for-google-cloud-pubsub). In the coming months, we will invest a lot more in performance tuning. | ||||
| From the beta release, we have made significant strides in the areas of usability, interoperability, and performance measurement on the [road to 1.0](https://www.youtube.com/watch?v=_vfbVJ_u5mE). In most of the languages, the [installation of the gRPC runtime](/blog/installation/) as well as setup of a development environment is a single command. Beyond installation, we have set up automated tests for gRPC across languages and RPC types in order to stress test our APIs and ensure interoperability. There is now a [performance dashboard](https://goo.gl/tHPEfD) available in the open to see latency and throughput for unary and streaming ping pong for various languages. Other measurements have shown significant gains from using gRPC/Protobuf instead of HTTP/JSON such as in [CoreOS blogpost](https://blog.gopheracademy.com/advent-2015/etcd-distributed-key-value-store-with-grpc-http2/) and in [Google Cloud PubSub testing](https://cloud.google.com/blog/big-data/2016/03/announcing-grpc-alpha-for-google-cloud-pubsub). In the coming months, we will invest a lot more in performance tuning. | ||||
| 
 | ||||
| Even within Google, we have seen Google cloud APIs like [BigTable](https://cloudplatform.googleblog.com/2015/07/A-Go-client-for-Google-Cloud-Bigtable.html), PubSub, [Speech](https://github.com/GoogleCloudPlatform/java-docs-samples/tree/master/speech/grpc), launch of a gRPC-based API surface leading to ease of use and performance benefits. Products like [Tensorflow](https://research.googleblog.com/2016/02/running-your-models-in-production-with.html) have effectively used gRPC for inter-process communication as well.  | ||||
| Even within Google, we have seen Google cloud APIs like [BigTable](https://cloudplatform.googleblog.com/2015/07/A-Go-client-for-Google-Cloud-Bigtable.html), PubSub, [Speech](https://github.com/GoogleCloudPlatform/java-docs-samples/tree/master/speech/grpc), launch of a gRPC-based API surface leading to ease of use and performance benefits. Products like [Tensorflow](https://research.googleblog.com/2016/02/running-your-models-in-production-with.html) have effectively used gRPC for inter-process communication as well. | ||||
| Beyond usage, we are keen to see the contributor community grow with gRPC. We are already starting to see contributions around gRPC in meaningful ways in the [grpc-ecosystem](https://github.com/grpc-ecosystem) organization. We are very happy to see projects like [grpc-gateway](https://github.com/grpc-ecosystem/grpc-gateway) to enable users to serve REST clients with gRPC based services, [Polyglot](https://github.com/grpc-ecosystem/polyglot) to have a CLI for gRPC, [Prometheus monitoring](https://github.com/grpc-ecosystem/go-grpc-prometheus) of gRPC Services and work with [OpenTracing](https://github.com/grpc-ecosystem/grpc-opentracing). You can suggest and contribute projects to this organization [here](https://docs.google.com/a/google.com/forms/d/119zb79XRovQYafE9XKjz9sstwynCWcMpoJwHgZJvK74/edit). We look forward to working with the community to take the gRPC project to new heights. | ||||
|  |  | |||
|  | @ -7,7 +7,7 @@ author: | |||
|   link: https://github.com/jadekler | ||||
| --- | ||||
| 
 | ||||
| In a [previous article](/blog/http2-smarter-at-scale), we explored how HTTP/2 dramatically increases network efficiency and enables real-time communication by providing a framework for long-lived connections. In this article, we’ll look at how gRPC builds on HTTP/2’s long-lived connections to create a performant, robust platform for inter-service communication. We will explore the relationship between gRPC and HTTP/2, how gRPC manages HTTP/2 connections, and how gRPC uses HTTP/2 to keep connections alive, healthy, and utilized. | ||||
| In a [previous article](/blog/http2-smarter-at-scale/), we explored how HTTP/2 dramatically increases network efficiency and enables real-time communication by providing a framework for long-lived connections. In this article, we’ll look at how gRPC builds on HTTP/2’s long-lived connections to create a performant, robust platform for inter-service communication. We will explore the relationship between gRPC and HTTP/2, how gRPC manages HTTP/2 connections, and how gRPC uses HTTP/2 to keep connections alive, healthy, and utilized. | ||||
| 
 | ||||
| <!--more--> | ||||
| 
 | ||||
|  |  | |||
|  | @ -110,7 +110,7 @@ var getTodo = todoService.getTodoById(getTodoRequest, metadata, (err, response) | |||
| }); | ||||
| ``` | ||||
| 
 | ||||
| Once you declare the data types and a service interface, gRPC-Web abstracts away all the boilerplate, leaving you with a clean and human-friendly API (essentially the same API as the current [Node.js](/docs/tutorials/basic/node/) for gRPC API, just transferred to the client). | ||||
| Once you declare the data types and a service interface, gRPC-Web abstracts away all the boilerplate, leaving you with a clean and human-friendly API (essentially the same API as the current [Node.js](/docs/languages/node/) for gRPC API, just transferred to the client). | ||||
| 
 | ||||
| On the backend, the gRPC server can be written in any language that supports gRPC, such as Go, Java, C++, Ruby, Node.js, and many others. The last piece of the puzzle is the service proxy. From the get-go, gRPC-Web will support [Envoy](https://envoyproxy.io) as the default service proxy, which has a built-in [envoy.grpc_web filter](https://www.envoyproxy.io/docs/envoy/latest/configuration/http_filters/grpc_web_filter#config-http-filters-grpc-web) that you can apply with just a few lines of configuration. | ||||
| 
 | ||||
|  |  | |||
|  | @ -197,7 +197,7 @@ consider posting to the [gRPC mailing list][] or sending us an email at | |||
| [grpc-web-team@google.com][]. | ||||
| 
 | ||||
| [1.1.0]: https://github.com/grpc/grpc-web/releases/tag/1.1.0 | ||||
| [gRPC languages]: /docs/languages | ||||
| [gRPC languages]: /docs/languages/ | ||||
| [gRPC mailing list]: https://groups.google.com/forum/#!forum/grpc-io | ||||
| [grpc-web-team@google.com]: mailto:grpc-web-team@google.com | ||||
| [grpc-web]: https://github.com/grpc/grpc-web | ||||
|  |  | |||
|  | @ -26,7 +26,7 @@ gRPC is actually a collection of technologies that have high cohesion, rather th | |||
| 
 | ||||
| Previously, Protobuf and gRPC were generating code for us, but we would like to use our own types.  Additionally, we are going to be using our own encoding too.  Gson allows us to bring our own types in our code, but provides a way of serializing those types into bytes. | ||||
| 
 | ||||
| Let's continue with the [Key-Value](https://github.com/carl-mastrangelo/kvstore/tree/04-gson-marshaller) store service.  We will be modifying the code used my previous [So You Want to Optimize gRPC](/blog/optimizing-grpc-part-2) post. | ||||
| Let's continue with the [Key-Value](https://github.com/carl-mastrangelo/kvstore/tree/04-gson-marshaller) store service.  We will be modifying the code used my previous [So You Want to Optimize gRPC](/blog/optimizing-grpc-part-2/) post. | ||||
| 
 | ||||
| ## What is a Service Anyways? | ||||
| 
 | ||||
|  | @ -187,7 +187,7 @@ $ time ./build/install/kvstore/bin/kvstore | |||
| INFO: Did 215.883 RPCs/s | ||||
| ``` | ||||
| 
 | ||||
| What happened?  In the previous [optimization](/blog/optimizing-grpc-part-2) post, we saw the Protobuf version do nearly _2,500 RPCs/s_.  JSON is slow, but not _that_ slow.  We can see what the problem is by printing out the JSON data as it goes through the marshaller: | ||||
| What happened?  In the previous [optimization](/blog/optimizing-grpc-part-2/) post, we saw the Protobuf version do nearly _2,500 RPCs/s_.  JSON is slow, but not _that_ slow.  We can see what the problem is by printing out the JSON data as it goes through the marshaller: | ||||
| 
 | ||||
| ```json | ||||
| {"key":[4,-100,-48,22,-128,85,115,5,56,34,-48,-1,-119,60,17,-13,-118]} | ||||
|  |  | |||
|  | @ -35,5 +35,5 @@ C# | Windows | Install [gRPC NuGet package](https://www.nuget.org/packages/Grpc/ | |||
| Java | Linux, Mac, Windows | Use our [Maven and Gradle plugins](https://github.com/grpc/grpc-java/blob/master/README.md) that provide gRPC with [statically linked `boringssl`](https://github.com/grpc/grpc-java/blob/master/SECURITY.md#openssl-statically-linked-netty-tcnative-boringssl-static) | ||||
| C++ | Linux, Mac, Windows | Currently requires [manual build and install](https://github.com/grpc/grpc/blob/{{< param grpc_release_tag >}}/src/cpp/README.md) | ||||
| 
 | ||||
| You can find out more about installation in our [Getting Started guide](/docs/quickstart) and GitHub repositories. Do send us your feedback on our [mailing list](https://groups.google.com/forum/#!forum/grpc-io) or file issues on our issue tracker if you run into any problems. | ||||
| You can find out more about installation in our [quick start pages](/docs/languages/) and GitHub repositories. Do send us your feedback on our [mailing list](https://groups.google.com/forum/#!forum/grpc-io) or file issues on our issue tracker if you run into any problems. | ||||
| 
 | ||||
|  |  | |||
|  | @ -391,4 +391,4 @@ need to understand what your code is doing, and what your code is supposed to do | |||
| the very basics of how to approach and think about optimization.  Always make sure to measure | ||||
| before and after your changes, and use these measurements to guide your optimizations. | ||||
| 
 | ||||
| In [Part 2](/blog/optimizing-grpc-part-2), we will continue optimizing the server part of the code. | ||||
| In [Part 2](/blog/optimizing-grpc-part-2/), we will continue optimizing the server part of the code. | ||||
|  |  | |||
|  | @ -8,14 +8,14 @@ author: | |||
| --- | ||||
| 
 | ||||
| How fast is gRPC?  Pretty fast if you understand how modern clients and servers are built.  In | ||||
| [part 1](/blog/optimizing-grpc-part-1), I showed how to get an easy **60%** improvement.  In this | ||||
| [part 1](/blog/optimizing-grpc-part-1/), I showed how to get an easy **60%** improvement.  In this | ||||
| post I show how to get a **10000%** improvement. | ||||
| 
 | ||||
| <!--more--> | ||||
| 
 | ||||
| ## Setup | ||||
| 
 | ||||
| As in [part 1](/blog/optimizing-grpc-part-1), we will start with an existing, Java based, | ||||
| As in [part 1](/blog/optimizing-grpc-part-1/), we will start with an existing, Java based, | ||||
| key-value service.  The service will offer concurrent access for creating, reading, updating, | ||||
| and deleting keys and values.  All the code can be seen | ||||
| [here](https://github.com/carl-mastrangelo/kvstore/tree/03-nonblocking-server) if you want to try | ||||
|  |  | |||
|  | @ -192,6 +192,6 @@ browser, and marks an exciting time for frontend developers! | |||
|     not part of the gRPC-Web spec, and is not recommended for production use. [↩](#a19) | ||||
| 20. <a id="f20"></a> `grpcweb` allows server streaming methods to be called, but | ||||
|     it doesn't return data until the stream has closed. [↩](#a20) | ||||
| 21. <a id="f21"></a> [gRPC-Web is Generally Available](/blog/grpc-web-ga) [↩](#a21) | ||||
| 21. <a id="f21"></a> [gRPC-Web is Generally Available](/blog/grpc-web-ga/) [↩](#a21) | ||||
| 22. <a id="f22"></a> [github.com/grpc/grpc-web/blob/master/doc/roadmap.md](https://github.com/grpc/grpc-web/blob/master/doc/roadmap.md) [↩](#a22) | ||||
| 23. <a id="f23"></a> [docs.google.com/forms/d/1NjWpyRviohn5jaPntosBHXRXZYkh_Ffi4GxJZFibylM](https://docs.google.com/forms/d/1NjWpyRviohn5jaPntosBHXRXZYkh_Ffi4GxJZFibylM) [↩](#a23) | ||||
|  |  | |||
|  | @ -6,7 +6,7 @@ gRPC has an active community of developers who are using, enhancing, and buildin | |||
| 
 | ||||
| ## Contribute on GitHub | ||||
| 
 | ||||
| gRPC has an active community of developers who are using, enhancing and building valuable integrations with other software projects. We are always looking for active contributors in gRPC and gRPC Ecosystem. Here are a few areas where we would love community contribution in grpc project. Be sure to follow our [community addition guidelines](/contribute). | ||||
| gRPC has an active community of developers who are using, enhancing and building valuable integrations with other software projects. We are always looking for active contributors in gRPC and gRPC Ecosystem. Here are a few areas where we would love community contribution in grpc project. Be sure to follow our [community addition guidelines](/contribute/). | ||||
| 
 | ||||
| ## [gRPC C-based](https://github.com/grpc/grpc/labels/disposition%2Fhelp%20wanted) | ||||
| 
 | ||||
|  | @ -20,7 +20,7 @@ For Android Java and Java. | |||
| 
 | ||||
| For the Go implementation. | ||||
| 
 | ||||
| [More on how to contribute to gRPC Documentation >](/contribute) | ||||
| [More on how to contribute to gRPC Documentation.](/contribute/) | ||||
| 
 | ||||
| ## Mailing list | ||||
| 
 | ||||
|  | @ -28,7 +28,7 @@ Any questions or suggestions? Just want to be in the loop of what is going on wi | |||
| 
 | ||||
| ## Join the gRPC Ecosystem | ||||
| 
 | ||||
| We have an organization for all valuable projects around gRPC in the [gRPC Ecosystem](https://github.com/grpc-ecosystem). The goal is to have all projects around gRPC (showing integrations with other projects or building utilities on top of gRPC) to be showcased here. If you have a new project you would like to add to gRPC Ecosystem, please fill up the [gRPC Ecosystem Project Request](https://docs.google.com/a/google.com/forms/d/119zb79XRovQYafE9XKjz9sstwynCWcMpoJwHgZJvK74/edit) form. Please read the [contribution guidelines](https://github.com/grpc/grpc-contrib/blob/master/CONTRIBUTING.md) for gRPC Ecosystem before submitting.  | ||||
| We have an organization for all valuable projects around gRPC in the [gRPC Ecosystem](https://github.com/grpc-ecosystem). The goal is to have all projects around gRPC (showing integrations with other projects or building utilities on top of gRPC) to be showcased here. If you have a new project you would like to add to gRPC Ecosystem, please fill up the [gRPC Ecosystem Project Request](https://docs.google.com/a/google.com/forms/d/119zb79XRovQYafE9XKjz9sstwynCWcMpoJwHgZJvK74/edit) form. Please read the [contribution guidelines](https://github.com/grpc/grpc-contrib/blob/master/CONTRIBUTING.md) for gRPC Ecosystem before submitting. | ||||
| 
 | ||||
| ## Gitter Channel | ||||
| 
 | ||||
|  |  | |||
|  | @ -28,4 +28,4 @@ Click the below button to visit the repo for our site. You can then click the "F | |||
| 
 | ||||
| ## Being a member of the gRPC organization on github | ||||
| 
 | ||||
| Being an organization member is not required for the vast majority of the contributions. Membership is required for certain administrative tasks such as accepting a pull request, or closing issues. If you wish to be part of the gRPC organization on github, please [get in touch with us](/community). Please note that in order to be part of the organization, your GitHub account needs to have [two-factor authentication enabled](https://help.github.com/articles/securing-your-account-with-two-factor-authentication-2fa/). | ||||
| Being an organization member is not required for the vast majority of the contributions. Membership is required for certain administrative tasks such as accepting a pull request, or closing issues. If you wish to be part of the gRPC organization on github, please [get in touch with us](/community/). Please note that in order to be part of the organization, your GitHub account needs to have [two-factor authentication enabled](https://help.github.com/articles/securing-your-account-with-two-factor-authentication-2fa/). | ||||
|  |  | |||
|  | @ -3,21 +3,21 @@ title: Documentation | |||
| --- | ||||
| 
 | ||||
| Learn about key gRPC concepts, try a quick start, find tutorials and reference | ||||
| material for all [supported languages](languages). | ||||
| material for all [supported languages](languages/). | ||||
| 
 | ||||
| - **New to gRPC?** Start with the following pages: | ||||
| 
 | ||||
|   - [Introduction to gRPC](what-is-grpc/introduction) | ||||
|   - [Core concepts, architecture and lifecycle](what-is-grpc/core-concepts) | ||||
|   - [FAQ](/faq) | ||||
|   - [Introduction to gRPC](what-is-grpc/introduction/) | ||||
|   - [Core concepts, architecture and lifecycle](what-is-grpc/core-concepts/) | ||||
|   - [FAQ](/faq/) | ||||
| 
 | ||||
| - **Eager to see gRPC in action?** | ||||
| 
 | ||||
|   [Select a language](languages) and then choose its **Quick Start**. | ||||
|   [Select a language](languages/) and then choose its **Quick start**. | ||||
| 
 | ||||
| - Interested in **gRPC feature details?** | ||||
| 
 | ||||
|   Try one of the following: | ||||
| 
 | ||||
|   - [Select a language](languages) and then choose **Tutorial** or **API reference** | ||||
|   - [Guides](guides) | ||||
|   - [Select a language](languages/) and then choose **Tutorial** or **API reference** | ||||
|   - [Guides](guides/) | ||||
|  |  | |||
|  | @ -7,6 +7,6 @@ nav_children: pages | |||
| 
 | ||||
| The documentation covers the following techniques: | ||||
| 
 | ||||
| - [Authentication](auth) | ||||
| - [Benchmarking](benchmarking) | ||||
| - [Error handling](error) | ||||
| - [Authentication](auth/) | ||||
| - [Benchmarking](benchmarking/) | ||||
| - [Error handling](error/) | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| --- | ||||
| title: ALTS Authentication | ||||
| title: ALTS authentication | ||||
| description: > | ||||
|   An overview of gRPC authentication using Application Layer Transport Security | ||||
|   (ALTS). | ||||
|  |  | |||
|  | @ -28,7 +28,7 @@ The following authentication mechanisms are built-in to gRPC: | |||
|   [ALTS](https://cloud.google.com/security/encryption-in-transit/application-layer-transport-security) | ||||
|   as a transport security mechanism, if the application is running on | ||||
|   [Google Cloud Platform (GCP)](https://cloud.google.com/). See | ||||
|   [ALTS Authentication Guide](ALTS) for details. | ||||
|   [ALTS authentication](alts/) for details. | ||||
| - **Token-based authentication with Google**: gRPC provides a generic | ||||
|   mechanism (described below) to attach metadata based credentials to requests | ||||
|   and responses. Additional support for acquiring access tokens | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| --- | ||||
| title: Error Handling | ||||
| title: Error handling | ||||
| description: How gRPC deals with errors, and gRPC error codes. | ||||
| --- | ||||
| 
 | ||||
|  |  | |||
|  | @ -13,19 +13,19 @@ Each gRPC language / platform has links to the following pages and more: | |||
| 
 | ||||
| Select a language to get started: | ||||
| 
 | ||||
| - [Android Java](android) | ||||
| - [C# / .NET](csharp) | ||||
| - [C++](cpp) | ||||
| - [Dart](dart) | ||||
| - [Go](go) | ||||
| - [Java](java) | ||||
| - [Kotlin/JVM](kotlin) | ||||
| - [Node.js](node) | ||||
| - [Objective-C](objective-c) | ||||
| - [PHP](php) | ||||
| - [Python](python) | ||||
| - [Ruby](ruby) | ||||
| - [Web](web) | ||||
| - [Android Java](android/) | ||||
| - [C# / .NET](csharp/) | ||||
| - [C++](cpp/) | ||||
| - [Dart](dart/) | ||||
| - [Go](go/) | ||||
| - [Java](java/) | ||||
| - [Kotlin/JVM](kotlin/) | ||||
| - [Node.js](node/) | ||||
| - [Objective-C](objective-c/) | ||||
| - [PHP](php/) | ||||
| - [Python](python/) | ||||
| - [Ruby](ruby/) | ||||
| - [Web](web/) | ||||
| 
 | ||||
| ### Official support | ||||
| 
 | ||||
|  |  | |||
|  | @ -5,6 +5,6 @@ api_path: grpc-java/javadoc | |||
| 
 | ||||
| These language-specific pages are available: | ||||
| 
 | ||||
| - [Quick start](quickstart) | ||||
| - [Basics tutorial](basics) | ||||
| - [API reference](api) | ||||
| - [Quick start](quickstart/) | ||||
| - [Basics tutorial](basics/) | ||||
| - [API reference](api/) | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| --- | ||||
| title: Basics Tutorial | ||||
| title: Basics tutorial | ||||
| description: A basic tutorial introduction to gRPC in Android Java. | ||||
| weight: 50 | ||||
| --- | ||||
|  | @ -12,8 +12,8 @@ By walking through this example you'll learn how to: | |||
| - Generate client code using the protocol buffer compiler. | ||||
| - Use the Java gRPC API to write a simple mobile client for your service. | ||||
| 
 | ||||
| It assumes that you have read the [Introduction to gRPC](/docs/what-is-grpc/introduction) and are familiar with [protocol buffers](https://developers.google.com/protocol-buffers/docs/overview). | ||||
| This guide also does not cover anything on the server side. You can check the [Java guide](/docs/tutorials/basic/java/) for more information. | ||||
| It assumes that you have read the [Introduction to gRPC](/docs/what-is-grpc/introduction/) and are familiar with [protocol buffers](https://developers.google.com/protocol-buffers/docs/overview). | ||||
| This guide also does not cover anything on the server side. You can check the [Java pages](/docs/languages/java/) for more information. | ||||
| 
 | ||||
| ### Why use gRPC? | ||||
| 
 | ||||
|  | @ -39,7 +39,7 @@ interface code - if you don't already, follow the setup instructions in the | |||
| 
 | ||||
| ### Defining the service | ||||
| 
 | ||||
| Our first step (as you'll know from the [Introduction to gRPC](/docs/what-is-grpc/introduction)) is to define the gRPC *service* and the method *request* and *response* types using [protocol buffers](https://developers.google.com/protocol-buffers/docs/overview). You can see the complete .proto file in [routeguide/app/src/main/proto/route_guide.proto](https://github.com/grpc/grpc-java/blob/{{< param grpc_java_release_tag >}}/examples/android/routeguide/app/src/main/proto/route_guide.proto). | ||||
| Our first step (as you'll know from the [Introduction to gRPC](/docs/what-is-grpc/introduction/)) is to define the gRPC *service* and the method *request* and *response* types using [protocol buffers](https://developers.google.com/protocol-buffers/docs/overview). You can see the complete .proto file in [routeguide/app/src/main/proto/route_guide.proto](https://github.com/grpc/grpc-java/blob/{{< param grpc_java_release_tag >}}/examples/android/routeguide/app/src/main/proto/route_guide.proto). | ||||
| 
 | ||||
| As we're generating Java code in this example, we've specified a `java_package` file option in our .proto: | ||||
| 
 | ||||
|  | @ -204,7 +204,7 @@ As you can see, it's very similar to the simple RPC we just looked at, except in | |||
| 
 | ||||
| ##### Client-side streaming RPC | ||||
| 
 | ||||
| Now for something a little more complicated: the client-side streaming method `RecordRoute`, where we send a stream of `Point`s to the server and get back a single `RouteSummary`. For this method we need to use the asynchronous stub. If you've already read [Creating the server](/docs/tutorials/basic/java/#server) some of this may look very familiar - asynchronous streaming RPCs are implemented in a similar way on both sides. | ||||
| Now for something a little more complicated: the client-side streaming method `RecordRoute`, where we send a stream of `Point`s to the server and get back a single `RouteSummary`. For this method we need to use the asynchronous stub. If you've already read [Creating the server](/docs/languages/java/basics/#server) some of this may look very familiar - asynchronous streaming RPCs are implemented in a similar way on both sides. | ||||
| 
 | ||||
| ```java | ||||
| private String recordRoute(List<Point> points, int numPoints, RouteGuideStub asyncStub) | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| --- | ||||
| title: Quick Start | ||||
| title: Quick start | ||||
| description: This guide gets you started with gRPC in Android Java with a simple working example. | ||||
| weight: 10 | ||||
| --- | ||||
|  | @ -95,7 +95,7 @@ Congratulations! You've just run a client-server application with gRPC. | |||
| 
 | ||||
| In this section you'll update the application by adding an extra server method. | ||||
| The gRPC service is defined using [protocol buffers][pb]. To learn more about | ||||
| how to define a service in a `.proto` file see [Basics Tutorial][]. For now, all | ||||
| how to define a service in a `.proto` file see [Basics tutorial][]. For now, all | ||||
| you need to know is that both the server and the client stub have a `SayHello()` | ||||
| RPC method that takes a `HelloRequest` parameter from the client and returns a | ||||
| `HelloReply` from the server, and that the method is defined like this: | ||||
|  | @ -159,7 +159,7 @@ hand-written parts of the example app. | |||
| #### Update the server | ||||
| 
 | ||||
| Follow the instructions given in [Update the | ||||
| server](/docs/quickstart/java/#update-the-server) of the Java quick start page. | ||||
| server](/docs/languages/java/quickstart/#update-the-server) of the Java quick start page. | ||||
| 
 | ||||
| #### Update the client | ||||
| 
 | ||||
|  | @ -251,12 +251,12 @@ In the app, use the following values: | |||
| 
 | ||||
| ### What's next | ||||
| 
 | ||||
| - Learn how gRPC works in [Introduction to gRPC](/docs/what-is-grpc/introduction) | ||||
|   and [Core concepts](/docs/what-is-grpc/core-concepts). | ||||
| - Work through the [Basics Tutorial](../basics). | ||||
| - Learn how gRPC works in [Introduction to gRPC](/docs/what-is-grpc/introduction/) | ||||
|   and [Core concepts](/docs/what-is-grpc/core-concepts/). | ||||
| - Work through the [Basics tutorial][]. | ||||
| - Explore the [API reference](../api). | ||||
| 
 | ||||
| [Basics Tutorial]: /docs/languages/android/basics | ||||
| [Basics tutorial]: ../basics/ | ||||
| [download]: https://github.com/grpc/grpc-java/archive/{{< param grpc_java_release_tag >}}.zip | ||||
| [grpc-java]: https://github.com/grpc/grpc-java | ||||
| [JDK]: https://jdk.java.net | ||||
|  |  | |||
|  | @ -4,7 +4,7 @@ title: C++ | |||
| 
 | ||||
| These language-specific pages are available: | ||||
| 
 | ||||
| - [Quick start](quickstart) | ||||
| - [Basics tutorial](basics) | ||||
| - [Asynchronous-API tutorial](async) | ||||
| - [Quick start](quickstart/) | ||||
| - [Basics tutorial](basics/) | ||||
| - [Asynchronous-API tutorial](async/) | ||||
| - [API reference](api) | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| --- | ||||
| title: Basics Tutorial | ||||
| title: Basics tutorial | ||||
| description: A basic tutorial introduction to gRPC in C++. | ||||
| weight: 50 | ||||
| --- | ||||
|  | @ -12,7 +12,7 @@ By walking through this example you'll learn how to: | |||
| - Generate server and client code using the protocol buffer compiler. | ||||
| - Use the C++ gRPC API to write a simple client and server for your service. | ||||
| 
 | ||||
| It assumes that you have read the [Introduction to gRPC](/docs/what-is-grpc/introduction) and are familiar | ||||
| It assumes that you have read the [Introduction to gRPC](/docs/what-is-grpc/introduction/) and are familiar | ||||
| with [protocol | ||||
| buffers](https://developers.google.com/protocol-buffers/docs/overview). Note | ||||
| that the example in this tutorial uses the proto3 version of the protocol | ||||
|  | @ -45,12 +45,12 @@ $ cd examples/cpp/route_guide | |||
| 
 | ||||
| You also should have the relevant tools installed to generate the server and | ||||
| client interface code - if you don't already, follow the setup instructions in | ||||
| [the C++ quick start guide](/docs/quickstart/cpp). | ||||
| [Quick start](/docs/languages/cpp/quickstart/). | ||||
| 
 | ||||
| 
 | ||||
| ### Defining the service | ||||
| 
 | ||||
| Our first step (as you'll know from the [Introduction to gRPC](/docs/what-is-grpc/introduction)) is to | ||||
| Our first step (as you'll know from the [Introduction to gRPC](/docs/what-is-grpc/introduction/)) is to | ||||
| define the gRPC *service* and the method *request* and *response* types using | ||||
| [protocol buffers](https://developers.google.com/protocol-buffers/docs/overview). | ||||
| You can see the complete .proto file in | ||||
|  |  | |||
|  | @ -1,7 +1,8 @@ | |||
| --- | ||||
| title: Quick Start | ||||
| title: Quick start | ||||
| description: This guide gets you started with gRPC in C++ with a simple working example. | ||||
| weight: 10 | ||||
| spelling: cSpell:ignore autoconf automake cmake cout DCMAKE endl libtool mkdir popd pushd | ||||
| cmake-version: 3.17.0 | ||||
| --- | ||||
| 
 | ||||
|  | @ -172,8 +173,8 @@ Congratulations! You've just run a client-server application with gRPC. | |||
| Now let's look at how to update the application with an extra method on the | ||||
| server for the client to call. Our gRPC service is defined using protocol | ||||
| buffers; you can find out lots more about how to define a service in a `.proto` | ||||
| file in [Introduction to gRPC](/docs/what-is-grpc/introduction) and [gRPC Basics: | ||||
| C++](/docs/tutorials/basic/cpp). For now all you need to know is that both the | ||||
| file in [Introduction to gRPC](/docs/what-is-grpc/introduction/) and [Basics | ||||
| tutorial][]. For now all you need to know is that both the | ||||
| server and the client stub have a `SayHello()` RPC method that takes a | ||||
| `HelloRequest` parameter from the client and returns a `HelloResponse` from the | ||||
| server, and that this method is defined like this: | ||||
|  | @ -351,9 +352,9 @@ from the example **build** directory `examples/cpp/helloworld/cmake/build`: | |||
| 
 | ||||
| ### What's next | ||||
| 
 | ||||
| - Learn how gRPC works in [Introduction to gRPC](/docs/what-is-grpc/introduction) | ||||
|   and [Core concepts](/docs/what-is-grpc/core-concepts). | ||||
| - Work through the [Basics Tutorial](../basics). | ||||
| - Learn how gRPC works in [Introduction to gRPC](/docs/what-is-grpc/introduction/) | ||||
|   and [Core concepts](/docs/what-is-grpc/core-concepts/). | ||||
| - Work through the [Basics tutorial](../basics/). | ||||
| - Explore the [API reference](../api). | ||||
| 
 | ||||
| [examples/protos/helloworld.proto]: https://github.com/grpc/grpc/blob/{{< param grpc_release_tag >}}/examples/protos/helloworld.proto | ||||
|  |  | |||
|  | @ -6,12 +6,12 @@ api_path: grpc/LANG/api/Grpc.Core | |||
| There are two official implementations of gRPC for C#. The original [gRPC | ||||
| core-library][core-library] implementation is covered here: | ||||
| 
 | ||||
| - [Quick start](quickstart) | ||||
| - [Basics tutorial](basics) | ||||
| - [Quick start](quickstart/) | ||||
| - [Basics tutorial](basics/) | ||||
| - [API reference](api) | ||||
| - [Daily builds](daily-builds) | ||||
| 
 | ||||
| For details concerning the newer gRPC for .NET implementation, see [gRPC for | ||||
| .NET](dotnet). | ||||
| .NET](dotnet/). | ||||
| 
 | ||||
| [core-library]: https://github.com/grpc/grpc/tree/master/src/csharp | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| --- | ||||
| title: Basics Tutorial | ||||
| title: Basics tutorial | ||||
| description: A basic tutorial introduction to gRPC in C#. | ||||
| weight: 50 | ||||
| --- | ||||
|  | @ -12,7 +12,7 @@ By walking through this example you'll learn how to: | |||
| - Generate server and client code using the protocol buffer compiler. | ||||
| - Use the C# gRPC API to write a simple client and server for your service. | ||||
| 
 | ||||
| It assumes that you have read the [Introduction to gRPC](/docs/what-is-grpc/introduction) and are familiar | ||||
| It assumes that you have read the [Introduction to gRPC](/docs/what-is-grpc/introduction/) and are familiar | ||||
| with [protocol buffers](https://developers.google.com/protocol-buffers/docs/overview). Note that the | ||||
| example in this tutorial uses the proto3 version of the protocol buffers | ||||
| language: you can find out more in the | ||||
|  | @ -43,7 +43,7 @@ instructions](https://github.com/grpc/grpc/tree/{{< param grpc_release_tag >}}/s | |||
| 
 | ||||
| ### Defining the service | ||||
| 
 | ||||
| Our first step (as you'll know from the [Introduction to gRPC](/docs/what-is-grpc/introduction)) is to | ||||
| Our first step (as you'll know from the [Introduction to gRPC](/docs/what-is-grpc/introduction/)) is to | ||||
| define the gRPC *service* and the method *request* and *response* types using | ||||
| [protocol buffers](https://developers.google.com/protocol-buffers/docs/overview). | ||||
| You can see the complete .proto file in | ||||
|  | @ -465,7 +465,7 @@ Using `dotnet` command line tool | |||
| 
 | ||||
| : Run `dotnet build RouteGuide.sln` from the `examples/csharp/RouteGuide` | ||||
|   directory. For additional instructions on building the gRPC example with the | ||||
|   `dotnet` command line tool, see [Quick Start](../../../quickstart/csharp). | ||||
|   `dotnet` command line tool, see [Quick start](../quickstart/). | ||||
| 
 | ||||
| Run the server: | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,12 +1,12 @@ | |||
| --- | ||||
| title: Quick Start | ||||
| title: Quick start | ||||
| description: This guide gets you started with gRPC in C# with a simple working example. | ||||
| weight: 10 | ||||
| --- | ||||
| 
 | ||||
| {{< note >}} | ||||
|   This page uses the [gRPC C# core-library][core-library] implementation. For | ||||
|   documentation covering gRPC for .NET, see [gRPC for .NET](../dotnet). | ||||
|   documentation covering gRPC for .NET, see [gRPC for .NET](../dotnet/). | ||||
| 
 | ||||
|   [core-library]: https://github.com/grpc/grpc/tree/master/src/csharp | ||||
| {{< /note >}} | ||||
|  | @ -85,7 +85,7 @@ Congratulations! You've just run a client-server application with gRPC. | |||
| Now let's look at how to update the application with an extra method on the | ||||
| server for the client to call. Our gRPC service is defined using protocol | ||||
| buffers; you can find out lots more about how to define a service in a `.proto` | ||||
| file in [gRPC Basics: C#](/docs/tutorials/basic/csharp/). For now all you need to know is that both the | ||||
| file in [Basics tutorial](../basics/). For now all you need to know is that both the | ||||
| server and the client "stub" have a `SayHello` RPC method that takes a | ||||
| `HelloRequest` parameter from the client and returns a `HelloResponse` from the | ||||
| server, and that this method is defined like this: | ||||
|  | @ -239,7 +239,7 @@ Just like we did before, from the `examples/csharp/Helloworld` directory: | |||
| 
 | ||||
| ### What's next | ||||
| 
 | ||||
| - Learn how gRPC works in [Introduction to gRPC](/docs/what-is-grpc/introduction) | ||||
|   and [Core concepts](/docs/what-is-grpc/core-concepts). | ||||
| - Work through the [Basics Tutorial](../basics). | ||||
| - Learn how gRPC works in [Introduction to gRPC](/docs/what-is-grpc/introduction/) | ||||
|   and [Core concepts](/docs/what-is-grpc/core-concepts/). | ||||
| - Work through the [Basics tutorial](../basics/) | ||||
| - Explore the [API reference](../api). | ||||
|  |  | |||
|  | @ -5,6 +5,6 @@ api_path: https://pub.dev/documentation/grpc | |||
| 
 | ||||
| These language-specific pages are available: | ||||
| 
 | ||||
| - [Quick start](quickstart) | ||||
| - [Basics tutorial](basics) | ||||
| - [Quick start](quickstart/) | ||||
| - [Basics tutorial](basics/) | ||||
| - [API reference](api) | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| --- | ||||
| title: Basics Tutorial | ||||
| title: Basics tutorial | ||||
| description: A basic tutorial introduction to gRPC in Dart. | ||||
| weight: 50 | ||||
| spelling: cSpell:ignore pbenum pbgrpc pbjson | ||||
|  | @ -14,7 +14,7 @@ By walking through this example you'll learn how to: | |||
| - Generate server and client code using the protocol buffer compiler. | ||||
| - Use the Dart gRPC API to write a simple client and server for your service. | ||||
| 
 | ||||
| It assumes that you have read the [Introduction to gRPC](/docs/what-is-grpc/introduction) and are familiar | ||||
| It assumes that you have read the [Introduction to gRPC](/docs/what-is-grpc/introduction/) and are familiar | ||||
| with [protocol buffers](https://developers.google.com/protocol-buffers/docs/overview). Note that the | ||||
| example in this tutorial uses the proto3 version of the protocol buffers | ||||
| language: you can find out more in the | ||||
|  | @ -47,7 +47,7 @@ interface code -- if you haven't, see [Quick start][] for setup instructions. | |||
| 
 | ||||
| ### Defining the service | ||||
| 
 | ||||
| Our first step (as you'll know from the [Introduction to gRPC](/docs/what-is-grpc/introduction)) is to | ||||
| Our first step (as you'll know from the [Introduction to gRPC](/docs/what-is-grpc/introduction/)) is to | ||||
| define the gRPC *service* and the method *request* and *response* types using | ||||
| [protocol buffers](https://developers.google.com/protocol-buffers/docs/overview). You can see the | ||||
| complete .proto file in | ||||
|  | @ -536,4 +536,4 @@ in our issue tracker. | |||
| 
 | ||||
| [grpc-dart/example/route_guide/lib/src/client.dart]: https://github.com/grpc/grpc-dart/tree/master/example/route_guide/lib/src/client.dart | ||||
| [new issue]: https://github.com/grpc/grpc-dart/issues/new | ||||
| [Quick start]: ../quickstart | ||||
| [Quick start]: ../quickstart/ | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| --- | ||||
| title: Quick Start | ||||
| title: Quick start | ||||
| description: This guide gets you started with gRPC in Dart with a simple working example. | ||||
| weight: 10 | ||||
| spelling: cSpell:ignore Iprotos | ||||
|  | @ -82,7 +82,7 @@ Congratulations! You've just run a client-server application with gRPC. | |||
| 
 | ||||
| In this section you'll update the app to make use of an extra server method. The | ||||
| gRPC service is defined using [protocol buffers][pb]. To learn more about how to | ||||
| define a service in a `.proto` file, see [Basics Tutorial][]. For now, all you | ||||
| define a service in a `.proto` file, see [Basics tutorial][]. For now, all you | ||||
| need to know is that both the server and the client stub have a `SayHello()` RPC | ||||
| method that takes a `HelloRequest` parameter from the client and returns a | ||||
| `HelloReply` from the server, and that the method is defined like this: | ||||
|  | @ -224,13 +224,13 @@ issue][issue] over the [grpc-dart][] repo. | |||
| 
 | ||||
| ### What's next | ||||
| 
 | ||||
| - Learn how gRPC works in [Introduction to gRPC](/docs/what-is-grpc/introduction) | ||||
|   and [Core concepts](/docs/what-is-grpc/core-concepts). | ||||
| - Work through the [Basics Tutorial][]. | ||||
| - Learn how gRPC works in [Introduction to gRPC](/docs/what-is-grpc/introduction/) | ||||
|   and [Core concepts](/docs/what-is-grpc/core-concepts/). | ||||
| - Work through the [Basics tutorial][]. | ||||
| - Explore the [API reference](../api). | ||||
| 
 | ||||
| [Dart]: https://dart.dev | ||||
| [Basics Tutorial]: ../basics | ||||
| [Basics tutorial]: ../basics/ | ||||
| [download]: https://github.com/grpc/grpc-dart/archive/master.zip | ||||
| [Flutter]: https://flutter.dev | ||||
| [github.com/google/protobuf/releases]: https://github.com/google/protobuf/releases | ||||
|  | @ -240,4 +240,4 @@ issue][issue] over the [grpc-dart][] repo. | |||
| [issue]: https://github.com/grpc/grpc-dart/issues/new | ||||
| [pb]: https://developers.google.com/protocol-buffers | ||||
| [proto3]: https://developers.google.com/protocol-buffers/docs/proto3 | ||||
| [pbc-install]: /docs/protoc-installation | ||||
| [pbc-install]: /docs/protoc-installation/ | ||||
|  |  | |||
|  | @ -5,7 +5,7 @@ api_path: https://pkg.go.dev/google.golang.org/grpc | |||
| 
 | ||||
| These language-specific pages are available: | ||||
| 
 | ||||
| - [Quick start](quickstart) | ||||
| - [Basics tutorial](basics) | ||||
| - [Generated-code reference](generated-code) | ||||
| - [Quick start](quickstart/) | ||||
| - [Basics tutorial](basics/) | ||||
| - [Generated-code reference](generated-code/) | ||||
| - [API reference](api) | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| --- | ||||
| title: Basics Tutorial | ||||
| title: Basics tutorial | ||||
| description: A basic tutorial introduction to gRPC in Go. | ||||
| weight: 50 | ||||
| spelling: cSpell:ignore Fatalf GOPATH Println Sprintf struct waitc | ||||
|  | @ -14,7 +14,7 @@ By walking through this example you'll learn how to: | |||
| - Generate server and client code using the protocol buffer compiler. | ||||
| - Use the Go gRPC API to write a simple client and server for your service. | ||||
| 
 | ||||
| It assumes that you have read the [Introduction to gRPC](/docs/what-is-grpc/introduction) and are familiar with | ||||
| It assumes that you have read the [Introduction to gRPC](/docs/what-is-grpc/introduction/) and are familiar with | ||||
| [protocol buffers](https://developers.google.com/protocol-buffers/docs/overview). | ||||
| Note that the example in this tutorial uses the proto3 version of the protocol | ||||
| buffers language: you can find out more in the [proto3 language | ||||
|  | @ -48,7 +48,7 @@ interface code -- if you haven't, see [Quick start][] for setup instructions. | |||
| 
 | ||||
| ### Defining the service | ||||
| 
 | ||||
| Our first step (as you'll know from the [Introduction to gRPC](/docs/what-is-grpc/introduction)) is to | ||||
| Our first step (as you'll know from the [Introduction to gRPC](/docs/what-is-grpc/introduction/)) is to | ||||
| define the gRPC *service* and the method *request* and *response* types using | ||||
| [protocol buffers](https://developers.google.com/protocol-buffers/docs/overview). | ||||
| You can see the complete .proto file in | ||||
|  | @ -576,4 +576,4 @@ From a different terminal, run the client: | |||
| $ go run client/client.go | ||||
| ``` | ||||
| 
 | ||||
| [Quick start]: ../quickstart | ||||
| [Quick start]: ../quickstart/ | ||||
|  |  | |||
|  | @ -1,13 +1,13 @@ | |||
| --- | ||||
| title: Go Generated-code Reference | ||||
| short: Generated Code | ||||
| title: Go Generated-code reference | ||||
| short: Generated code | ||||
| weight: 80 | ||||
| --- | ||||
| 
 | ||||
| This page describes the code generated with the [grpc plugin](https://godoc.org/github.com/golang/protobuf/protoc-gen-go/grpc) to `protoc-gen-go` | ||||
| when compiling `.proto` files with `protoc`. | ||||
| 
 | ||||
| You can find out how to define a gRPC service in a `.proto` file in [Service Definitions](/docs/guides/concepts/#service-definition). | ||||
| You can find out how to define a gRPC service in a `.proto` file in [Service definition](/docs/what-is-grpc/core-concepts/#service-definition). | ||||
| 
 | ||||
| <p class="note"><strong>Thread-safety</strong>: note that client-side RPC invocations and server-side RPC handlers <i>are thread-safe</i> and are meant | ||||
| to be run on concurrent goroutines. But also note that for <i>individual streams</i>, incoming and outgoing data is bi-directional but serial; | ||||
|  | @ -15,6 +15,7 @@ so e.g. <i>individual streams</i> do not support <i>concurrent reads</i> or <i>c | |||
| </p> | ||||
| 
 | ||||
| ## Methods on generated server interfaces | ||||
| 
 | ||||
| On the server side, each `service Bar` in the `.proto` file results in the function: | ||||
| 
 | ||||
| `func RegisterBarServer(s *grpc.Server, srv BarServer)` | ||||
|  | @ -23,6 +24,7 @@ The application can define a concrete implementation of the `BarServer` interfac | |||
| (before starting the server instance) by using this function. | ||||
| 
 | ||||
| ### Unary methods | ||||
| 
 | ||||
| These methods have the following signature on the generated service interface: | ||||
| 
 | ||||
| `Foo(context.Context, *MsgA) (*MsgB, error)` | ||||
|  | @ -30,6 +32,7 @@ These methods have the following signature on the generated service interface: | |||
| In this context, `MsgA` is the protobuf message sent from the client, and `MsgB` is the protobuf message sent back from the server. | ||||
| 
 | ||||
| ### Server-streaming methods | ||||
| 
 | ||||
| These methods have the following signature on the generated service interface: | ||||
| 
 | ||||
| `Foo(*MsgA, <ServiceName>_FooServer) error` | ||||
|  | @ -50,6 +53,7 @@ The server-side handler can send a stream of protobuf messages to the client thr | |||
| stream is caused by the `return` of the handler method. | ||||
| 
 | ||||
| ### Client-streaming methods | ||||
| 
 | ||||
| These methods have the following signature on the generated service interface: | ||||
| 
 | ||||
| `Foo(<ServiceName>_FooServer) error` | ||||
|  | @ -72,6 +76,7 @@ The single response message from the server is sent by calling the `SendAndClose | |||
| Note that `SendAndClose` must be called once and only once. | ||||
| 
 | ||||
| ### Bidi-streaming methods | ||||
| 
 | ||||
| These methods have the following signature on the generated service interface: | ||||
| 
 | ||||
| `Foo(<ServiceName>_FooServer) error` | ||||
|  | @ -93,10 +98,12 @@ The response server-to-client message stream is sent by repeatedly calling the ` | |||
| End-of-stream for the server-to-client stream is indicated by the `return` of the bidi method handler. | ||||
| 
 | ||||
| ## Methods on generated client interfaces | ||||
| 
 | ||||
| For client side usage, each `service Bar` in the `.proto` file also results in the function: `func BarClient(cc *grpc.ClientConn) BarClient`, which | ||||
| returns a concrete implementation of the `BarClient` interface (this concrete implementation also lives in the generated `.pb.go` file). | ||||
| 
 | ||||
| ### Unary Methods | ||||
| 
 | ||||
| These methods have the following signature on the generated client stub: | ||||
| 
 | ||||
| `(ctx context.Context, in *MsgA, opts ...grpc.CallOption) (*MsgB, error)` | ||||
|  | @ -104,6 +111,7 @@ These methods have the following signature on the generated client stub: | |||
| In this context, `MsgA` is the single request from client to server, and `MsgB` contains the response sent back from the server. | ||||
| 
 | ||||
| ### Server-Streaming methods | ||||
| 
 | ||||
| These methods have the following signature on the generated client stub: | ||||
| 
 | ||||
| `Foo(ctx context.Context, in *MsgA, opts ...grpc.CallOption) (<ServiceName>_FooClient, error)` | ||||
|  | @ -124,6 +132,7 @@ The client can then repeatedly call the `Recv` method on the returned `<ServiceN | |||
| This `Recv` method returns `(nil, io.EOF)` once the server-to-client stream has been completely read through. | ||||
| 
 | ||||
| ### Client-Streaming methods | ||||
| 
 | ||||
| These methods have the following signature on the generated client stub: | ||||
| 
 | ||||
| `Foo(ctx context.Context, opts ...grpc.CallOption) (<ServiceName>_FooClient, error)` | ||||
|  | @ -146,6 +155,7 @@ The `CloseAndRecv` method on this stream must be called once and only once, in o | |||
| and receive the single response message from the server. | ||||
| 
 | ||||
| ### Bidi-Streaming methods | ||||
| 
 | ||||
| These methods have the following signature on the generated client stub: | ||||
| 
 | ||||
| `Foo(ctx context.Context, opts ...grpc.CallOption) (<ServiceName>_FooClient, error)` | ||||
|  | @ -171,6 +181,7 @@ End-of-stream for the server-to-client stream is indicated by a return value of | |||
| End-of-stream for the client-to-server stream can be indicated from the client by calling the `CloseSend` method on the stream. | ||||
| 
 | ||||
| ## Packages and Namespaces | ||||
| 
 | ||||
| When the `protoc` compiler is invoked with `--go_out=plugins=grpc:`, the `proto package` to Go package translation | ||||
| works the same as when the `protoc-gen-go` plugin is used without the `grpc` plugin. | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| --- | ||||
| title: Quick Start | ||||
| title: Quick start | ||||
| description: This guide gets you started with gRPC in Go with a simple working example. | ||||
| weight: 10 | ||||
| --- | ||||
|  | @ -72,8 +72,8 @@ Congratulations! You've just run a client-server application with gRPC. | |||
| 
 | ||||
| In this section you'll update the application with an extra server method. The | ||||
| gRPC service is defined using [protocol buffers][pb]. To learn more about how to | ||||
| define a service in a `.proto` file see [gRPC Basics: | ||||
| Go](/docs/tutorials/basic/go). For now, all you need to know is that both the | ||||
| define a service in a `.proto` file see [Basics tutorial][]. | ||||
| For now, all you need to know is that both the | ||||
| server and the client stub have a `SayHello()` RPC method that takes a | ||||
| `HelloRequest` parameter from the client and returns a `HelloReply` from the | ||||
| server, and that the method is defined like this: | ||||
|  | @ -210,16 +210,17 @@ from the `examples/helloworld` directory: | |||
| 
 | ||||
| ### What's next | ||||
| 
 | ||||
| - Learn how gRPC works in [Introduction to gRPC](/docs/what-is-grpc/introduction) | ||||
|   and [Core concepts](/docs/what-is-grpc/core-concepts). | ||||
| - Work through the [Basics Tutorial](../basics). | ||||
| - Learn how gRPC works in [Introduction to gRPC](/docs/what-is-grpc/introduction/) | ||||
|   and [Core concepts](/docs/what-is-grpc/core-concepts/). | ||||
| - Work through the [Basics tutorial][]. | ||||
| - Explore the [API reference](../api). | ||||
| 
 | ||||
| [Basics tutorial]: ../basics/ | ||||
| [download]: https://github.com/grpc/grpc-go/archive/{{< param grpc_go_release_tag >}}.zip | ||||
| [Getting Started]: https://golang.org/doc/install | ||||
| [Go]: https://golang.org | ||||
| [grpc-go]: https://github.com/grpc/grpc-go | ||||
| [pb]: https://developers.google.com/protocol-buffers | ||||
| [proto3]: https://developers.google.com/protocol-buffers/docs/proto3 | ||||
| [pbc-install]: /docs/protoc-installation | ||||
| [pbc-install]: /docs/protoc-installation/ | ||||
| [releases of Go]: https://golang.org/doc/devel/release.html | ||||
|  |  | |||
|  | @ -5,7 +5,7 @@ api_path: grpc-java/javadoc | |||
| 
 | ||||
| These language-specific pages are available: | ||||
| 
 | ||||
| - [Quick start](quickstart) | ||||
| - [Basics tutorial](basics) | ||||
| - [Generated-code reference](generated-code) | ||||
| - [Quick start](quickstart/) | ||||
| - [Basics tutorial](basics/) | ||||
| - [Generated-code reference](generated-code/) | ||||
| - [API reference](api) | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| --- | ||||
| title: Basics Tutorial | ||||
| title: Basics tutorial | ||||
| description: A basic tutorial introduction to gRPC in Java. | ||||
| weight: 50 | ||||
| --- | ||||
|  | @ -13,7 +13,7 @@ By walking through this example you'll learn how to: | |||
| - Generate server and client code using the protocol buffer compiler. | ||||
| - Use the Java gRPC API to write a simple client and server for your service. | ||||
| 
 | ||||
| It assumes that you have read the [Introduction to gRPC](/docs/what-is-grpc/introduction) and are familiar | ||||
| It assumes that you have read the [Introduction to gRPC](/docs/what-is-grpc/introduction/) and are familiar | ||||
| with [protocol | ||||
| buffers](https://developers.google.com/protocol-buffers/docs/overview). Note | ||||
| that the example in this tutorial uses the | ||||
|  | @ -46,7 +46,7 @@ $ cd grpc-java/examples | |||
| 
 | ||||
| ### Defining the service | ||||
| 
 | ||||
| Our first step (as you'll know from the [Introduction to gRPC](/docs/what-is-grpc/introduction)) is to | ||||
| Our first step (as you'll know from the [Introduction to gRPC](/docs/what-is-grpc/introduction/)) is to | ||||
| define the gRPC *service* and the method *request* and *response* types using | ||||
| [protocol | ||||
| buffers](https://developers.google.com/protocol-buffers/docs/overview). You can | ||||
|  |  | |||
|  | @ -1,7 +1,8 @@ | |||
| --- | ||||
| title: Java Generated-code Reference | ||||
| short: Generated Code | ||||
| title: Java generated-code reference | ||||
| short: Generated code | ||||
| weight: 80 | ||||
| spelling: cSpell:ignore buildscript classpath grpcexample motd srcs xolstice | ||||
| --- | ||||
| 
 | ||||
| ## Packages | ||||
|  | @ -87,7 +88,7 @@ public StreamObserver<RequestType> bidirectionalStreamingExample( | |||
| 
 | ||||
| The signatures for client and bidirectional-streaming RPCs are the same. Since | ||||
| the client can send multiple messages to the service, the service implementation | ||||
| is reponsible for returning a `StreamObserver<RequestType>` instance. This | ||||
| is responsible for returning a `StreamObserver<RequestType>` instance. This | ||||
| `StreamObserver` is invoked whenever additional messages are received from the | ||||
| client. | ||||
| 
 | ||||
|  | @ -309,7 +310,7 @@ java_grpc_library( | |||
| ) | ||||
| ``` | ||||
| 
 | ||||
| Android developers please see [this](/docs/tutorials/basic/android/#generating-client-code) for reference. | ||||
| Android developers, see [Generating client code](/docs/languages/android/basics/#generating-client-code) for reference. | ||||
| 
 | ||||
| If you wish to invoke the protobuf plugin for gRPC Java directly, | ||||
| the command-line syntax is as follows: | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| --- | ||||
| title: Quick Start | ||||
| title: Quick start | ||||
| description: This guide gets you started with gRPC in Java with a simple working example. | ||||
| weight: 10 | ||||
| --- | ||||
|  | @ -61,7 +61,7 @@ Congratulations! You've just run a client-server application with gRPC. | |||
| 
 | ||||
| In this section you'll update the application by adding an extra server method. | ||||
| The gRPC service is defined using [protocol buffers][pb]. To learn more about | ||||
| how to define a service in a `.proto` file see [Basics Tutorial][]. For now, all | ||||
| how to define a service in a `.proto` file see [Basics tutorial][]. For now, all | ||||
| you need to know is that both the server and the client stub have a `SayHello()` | ||||
| RPC method that takes a `HelloRequest` parameter from the client and returns a | ||||
| `HelloReply` from the server, and that the method is defined like this: | ||||
|  | @ -201,12 +201,12 @@ from the `examples` directory: | |||
| 
 | ||||
| ### What's next | ||||
| 
 | ||||
| - Learn how gRPC works in [Introduction to gRPC](/docs/what-is-grpc/introduction) | ||||
|   and [Core concepts](/docs/what-is-grpc/core-concepts). | ||||
| - Work through the [Basics Tutorial](../basics). | ||||
| - Learn how gRPC works in [Introduction to gRPC](/docs/what-is-grpc/introduction/) | ||||
|   and [Core concepts](/docs/what-is-grpc/core-concepts/). | ||||
| - Work through the [Basics tutorial][]. | ||||
| - Explore the [API reference](../api). | ||||
| 
 | ||||
| [Basics Tutorial]: /docs/languages/java/basics | ||||
| [Basics tutorial]: ../basics/ | ||||
| [download]: https://github.com/grpc/grpc-java/archive/{{< param grpc_java_release_tag >}}.zip | ||||
| [grpc-java]: https://github.com/grpc/grpc-java | ||||
| [JDK]: https://jdk.java.net | ||||
|  |  | |||
|  | @ -5,6 +5,6 @@ api_path: https://javadocs.dev/io.grpc/grpc-kotlin-stub/latest | |||
| 
 | ||||
| These language-specific pages are available: | ||||
| 
 | ||||
| - [Quick start](quickstart) | ||||
| - [Basics tutorial](basics) | ||||
| - [Quick start](quickstart/) | ||||
| - [Basics tutorial](basics/) | ||||
| - [API reference](api) | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| --- | ||||
| title: Basics Tutorial | ||||
| title: Basics tutorial | ||||
| description: A basic tutorial introduction to gRPC in Kotlin/JVM. | ||||
| weight: 50 | ||||
| --- | ||||
|  | @ -13,7 +13,7 @@ By walking through this example you'll learn how to: | |||
| - Generate server and client code using the protocol buffer compiler. | ||||
| - Use the Kotlin gRPC API to write a simple client and server for your service. | ||||
| 
 | ||||
| It assumes that you have read the [Introduction to gRPC](/docs/what-is-grpc/introduction) and are familiar | ||||
| It assumes that you have read the [Introduction to gRPC](/docs/what-is-grpc/introduction/) and are familiar | ||||
| with [protocol buffers](https://developers.google.com/protocol-buffers/docs/overview). Note that the | ||||
| example in this tutorial uses the proto3 version of the protocol buffers | ||||
| language: you can find out more in the | ||||
|  | @ -54,7 +54,7 @@ $ cd grpc-kotlin/examples/src/main/kotlin/io/grpc/examples/routeguide | |||
| 
 | ||||
| ### Defining the service | ||||
| 
 | ||||
| Our first step (as you'll know from the [Introduction to gRPC](/docs/what-is-grpc/introduction)) is to | ||||
| Our first step (as you'll know from the [Introduction to gRPC](/docs/what-is-grpc/introduction/)) is to | ||||
| define the gRPC *service* and the method *request* and *response* types using | ||||
| [protocol | ||||
| buffers](https://developers.google.com/protocol-buffers/docs/overview). You can | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| --- | ||||
| title: Quick Start | ||||
| title: Quick start | ||||
| description: This guide gets you started with gRPC in Kotlin with a simple working example. | ||||
| weight: 10 | ||||
| --- | ||||
|  | @ -52,7 +52,7 @@ Congratulations! You've just run a client-server application with gRPC. | |||
| Now let's look at how to update the application with an extra method on the | ||||
| server for the client to call. Our gRPC service is defined using [Protocol | ||||
| Buffers][pb]; you can find out lots more about how to define a service in a | ||||
| `.proto` file in [gRPC Basics: Kotlin](/docs/tutorials/basic/kotlin). For now | ||||
| `.proto` file in [Basics tutorial](../basics/). For now | ||||
| all you need to know is that both the server and the client "stub" have a | ||||
| `SayHello()` RPC method that takes a `HelloRequest` parameter from the client | ||||
| and returns a `HelloReply` from the server, and that this method is defined like | ||||
|  | @ -191,9 +191,9 @@ from the `examples` directory: | |||
| 
 | ||||
| ### What's next | ||||
| 
 | ||||
| - Learn how gRPC works in [Introduction to gRPC](/docs/what-is-grpc/introduction) | ||||
|   and [Core concepts](/docs/what-is-grpc/core-concepts). | ||||
| - Work through the [Basics Tutorial](../basics). | ||||
| - Learn how gRPC works in [Introduction to gRPC](/docs/what-is-grpc/introduction/) | ||||
|   and [Core concepts](/docs/what-is-grpc/core-concepts/). | ||||
| - Work through the [Basics tutorial](../basics/). | ||||
| - Explore the [API reference](../api). | ||||
| 
 | ||||
| [Kotlin]: https://kotlinlang.org | ||||
|  |  | |||
|  | @ -4,6 +4,6 @@ title: Node | |||
| 
 | ||||
| These language-specific pages are available: | ||||
| 
 | ||||
| - [Quick start](quickstart) | ||||
| - [Basics tutorial](basics) | ||||
| - [Quick start](quickstart/) | ||||
| - [Basics tutorial](basics/) | ||||
| - [API reference](api) | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| --- | ||||
| title: Basics Tutorial | ||||
| title: Basics tutorial | ||||
| description: A basic tutorial introduction to gRPC in Node. | ||||
| weight: 50 | ||||
| spelling: cSpell:ignore Protobuf oneofs COORD | ||||
|  | @ -13,7 +13,7 @@ By walking through this example you'll learn how to: | |||
| - Define a service in a .proto file. | ||||
| - Use the Node.js gRPC API to write a simple client and server for your service. | ||||
| 
 | ||||
| It assumes that you have read the [Introduction to gRPC](/docs/what-is-grpc/introduction) and are familiar | ||||
| It assumes that you have read the [Introduction to gRPC](/docs/what-is-grpc/introduction/) and are familiar | ||||
| with [protocol | ||||
| buffers](https://developers.google.com/protocol-buffers/docs/overview). Note | ||||
| that the example in this tutorial uses the | ||||
|  | @ -57,12 +57,12 @@ $ cd examples/node | |||
| 
 | ||||
| You also should have the relevant tools installed to generate the server and | ||||
| client interface code - if you don't already, follow the setup instructions in | ||||
| [the Node.js quick start guide](/docs/quickstart/node/). | ||||
| [Quick start](../quickstart/). | ||||
| 
 | ||||
| 
 | ||||
| ### Defining the service | ||||
| 
 | ||||
| Our first step (as you'll know from the [Introduction to gRPC](/docs/what-is-grpc/introduction)) is to | ||||
| Our first step (as you'll know from the [Introduction to gRPC](/docs/what-is-grpc/introduction/)) is to | ||||
| define the gRPC *service* and the method *request* and *response* types using | ||||
| [protocol | ||||
| buffers](https://developers.google.com/protocol-buffers/docs/overview). You can | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| --- | ||||
| title: Quick Start | ||||
| title: Quick start | ||||
| description: This guide gets you started with gRPC in Node with a simple working example. | ||||
| weight: 10 | ||||
| --- | ||||
|  | @ -48,7 +48,7 @@ Congratulations! You've just run a client-server application with gRPC. | |||
| Now let's look at how to update the application with an extra method on the | ||||
| server for the client to call. Our gRPC service is defined using protocol | ||||
| buffers; you can find out lots more about how to define a service in a `.proto` | ||||
| file in [gRPC Basics: Node](/docs/tutorials/basic/node/). For now all you need | ||||
| file in [Basics tutorial](../basics/). For now all you need | ||||
| to know is that both the server and the client "stub" have a `SayHello` RPC | ||||
| method that takes a `HelloRequest` parameter from the client and returns a | ||||
| `HelloReply` from the server, and that this method is defined like this: | ||||
|  | @ -161,9 +161,9 @@ Just like we did before, from the `examples/node/dynamic_codegen` directory: | |||
| 
 | ||||
| ### What's next | ||||
| 
 | ||||
| - Learn how gRPC works in [Introduction to gRPC](/docs/what-is-grpc/introduction) | ||||
|   and [Core concepts](/docs/what-is-grpc/core-concepts). | ||||
| - Work through the [Basics Tutorial](../basics). | ||||
| - Learn how gRPC works in [Introduction to gRPC](/docs/what-is-grpc/introduction/) | ||||
|   and [Core concepts](/docs/what-is-grpc/core-concepts/). | ||||
| - Work through the [Basics tutorial](../basics/). | ||||
| - Explore the [API reference](../api). | ||||
| - We have more than one grpc implementation for Node. For the pros and cons of | ||||
|   each package, see this [package feature comparison][]. | ||||
|  |  | |||
|  | @ -5,9 +5,9 @@ api_path: grpc/objc | |||
| 
 | ||||
| These language-specific pages are available: | ||||
| 
 | ||||
| - [Quick start](quickstart) | ||||
| - [Basics tutorial](basics) | ||||
| - [OAuth2 tutorial](oauth2) | ||||
| - [Quick start](quickstart/) | ||||
| - [Basics tutorial](basics/) | ||||
| - [OAuth2 tutorial](oauth2/) | ||||
| - [API reference](api) | ||||
| 
 | ||||
| Related resources: | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| --- | ||||
| title: Basics Tutorial | ||||
| title: Basics tutorial | ||||
| description: A basic tutorial introduction to gRPC in Objective-C. | ||||
| weight: 50 | ||||
| --- | ||||
|  |  | |||
|  | @ -15,9 +15,8 @@ By walking through it you'll also learn how to use the Objective-C gRPC API to: | |||
|   headers and trailers. | ||||
| 
 | ||||
| It assumes you know the basics on how to make gRPC API calls using the | ||||
| Objective-C client library, as shown in [gRPC Basics: | ||||
| Objective-C](/docs/tutorials/basic/objective-c/) and the | ||||
| [Introduction to gRPC](/docs/what-is-grpc/introduction), and are familiar with OAuth2 concepts like _access | ||||
| Objective-C client library, as shown in [Basics tutorial](../basics/) and the | ||||
| [Introduction to gRPC](/docs/what-is-grpc/introduction/), and are familiar with OAuth2 concepts like _access | ||||
| token_. | ||||
| 
 | ||||
| ### Example code and setup {#setup} | ||||
|  | @ -58,23 +57,23 @@ here](https://developers.google.com/identity/sign-in/ios/). | |||
| {{< /note >}} | ||||
| 
 | ||||
| As with the other Objective-C examples, you also should have | ||||
| [Cocoapods](https://cocoapods.org/#install) installed, as well as the relevant | ||||
| [CocoaPods](https://cocoapods.org/#install) installed, as well as the relevant | ||||
| tools to generate the client library code. You can obtain the latter by | ||||
| following [these setup instructions](https://github.com/grpc/homebrew-grpc). | ||||
| 
 | ||||
| ### Try it out! {#try} | ||||
| 
 | ||||
| To try the sample app, first have Cocoapods generate and install the client library for our .proto | ||||
| To try the sample app, first have CocoaPods generate and install the client library for our .proto | ||||
| files: | ||||
| 
 | ||||
| ```sh | ||||
| $ pod install | ||||
| ``` | ||||
| 
 | ||||
| (This might have to compile OpenSSL, which takes around 15 minutes if Cocoapods | ||||
| (This might have to compile OpenSSL, which takes around 15 minutes if CocoaPods | ||||
| doesn't have it yet on your computer's cache). | ||||
| 
 | ||||
| Finally, open the XCode workspace created by Cocoapods, and run the app. | ||||
| Finally, open the XCode workspace created by CocoaPods, and run the app. | ||||
| 
 | ||||
| The first view, `SelectUserViewController.h/m`, asks you to sign in with your | ||||
| Google account, and to give the "gRPC-AuthSample" app the following permissions: | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| --- | ||||
| title: Quick Start | ||||
| title: Quick start | ||||
| description: This guide gets you started with gRPC on the iOS platform in Objective-C with a simple working example. | ||||
| weight: 10 | ||||
| --- | ||||
|  | @ -311,7 +311,7 @@ Cannot find `protoc` when building HelloWorld | |||
| 
 | ||||
| ### What's next | ||||
| 
 | ||||
| - Learn how gRPC works in [Introduction to gRPC](/docs/what-is-grpc/introduction) | ||||
|   and [Core concepts](/docs/what-is-grpc/core-concepts). | ||||
| - Work through the [Basics Tutorial](../basics). | ||||
| - Learn how gRPC works in [Introduction to gRPC](/docs/what-is-grpc/introduction/) | ||||
|   and [Core concepts](/docs/what-is-grpc/core-concepts/). | ||||
| - Work through the [Basics tutorial](../basics/). | ||||
| - Explore the [API reference](../api). | ||||
|  |  | |||
|  | @ -5,7 +5,7 @@ api_path: grpc/LANG/namespace_grpc | |||
| 
 | ||||
| These language-specific pages are available: | ||||
| 
 | ||||
| - [Quick start](quickstart) | ||||
| - [Basics tutorial](basics) | ||||
| - [Quick start](quickstart/) | ||||
| - [Basics tutorial](basics/) | ||||
| - [API reference](api) | ||||
| - [Daily builds](daily-builds) | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| --- | ||||
| title: Basics Tutorial | ||||
| title: Basics tutorial | ||||
| description: A basic tutorial introduction to gRPC in PHP. | ||||
| weight: 50 | ||||
| --- | ||||
|  | @ -18,9 +18,8 @@ buffers](https://developers.google.com/protocol-buffers/docs/overview). Note | |||
| that the example in this tutorial uses the proto2 version of the protocol | ||||
| buffers language. | ||||
| 
 | ||||
| Also note that currently you can only create clients in PHP for gRPC services - | ||||
| you can find out how to create gRPC servers in our other tutorials, e.g. | ||||
| [Node.js](/docs/tutorials/basic/node/). | ||||
| Also note that currently, you can only create clients in PHP for gRPC services. | ||||
| Use [another language](/docs/languages/) to create a gRPC server. | ||||
| 
 | ||||
| ### Why use gRPC? | ||||
| 
 | ||||
|  | @ -58,7 +57,7 @@ clients. | |||
| You also should have the relevant tools installed to generate the client | ||||
| interface code (and a server in another language, for testing). You can obtain | ||||
| the latter by following [these setup | ||||
| instructions](/docs/tutorials/basic/node/). | ||||
| instructions](/docs/languages/node/basics/), for example. | ||||
| 
 | ||||
| ### Try it out! {#try} | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| --- | ||||
| title: Quick Start | ||||
| title: Quick start | ||||
| description: This guide gets you started with gRPC in PHP with a simple working example. | ||||
| weight: 10 | ||||
| --- | ||||
|  | @ -259,9 +259,8 @@ Download the example code from our GitHub repository (the following command | |||
| clones the entire repository, but you just need the examples for this quick start | ||||
| and other tutorials): | ||||
| 
 | ||||
| Note that currently you can only create clients in PHP for gRPC services - | ||||
| you can find out how to create gRPC servers in our other tutorials, | ||||
| e.g. [Node.js](/docs/tutorials/basic/node/). | ||||
| Note that currently, you can only create clients in PHP for gRPC services. | ||||
| Use [another language](/docs/languages/) to create a gRPC server. | ||||
| 
 | ||||
| ```sh | ||||
| # Clone the repository to get the example code: | ||||
|  | @ -300,7 +299,7 @@ Congratulations! You've just run a client-server application with gRPC. | |||
| Now let's look at how to update the application with an extra method on the | ||||
| server for the client to call. Our gRPC service is defined using protocol | ||||
| buffers; you can find out lots more about how to define a service in a `.proto` | ||||
| file in [gRPC Basics: PHP](/docs/tutorials/basic/php/). For now all you need to know is that both the | ||||
| file in [Basics tutorial](../basics/). For now all you need to know is that both the | ||||
| server and the client "stub" have a `SayHello` RPC method that takes a | ||||
| `HelloRequest` parameter from the client and returns a `HelloResponse` from | ||||
| the server, and that this method is defined like this: | ||||
|  | @ -435,7 +434,7 @@ Just like we did before, from the `examples/node/dynamic_codegen` directory: | |||
| 
 | ||||
| ### What's next | ||||
| 
 | ||||
| - Learn how gRPC works in [Introduction to gRPC](/docs/what-is-grpc/introduction) | ||||
|   and [Core concepts](/docs/what-is-grpc/core-concepts). | ||||
| - Work through the [Basics Tutorial](../basics). | ||||
| - Learn how gRPC works in [Introduction to gRPC](/docs/what-is-grpc/introduction/) | ||||
|   and [Core concepts](/docs/what-is-grpc/core-concepts/). | ||||
| - Work through the [Basics tutorial](../basics/). | ||||
| - Explore the [API reference](../api). | ||||
|  |  | |||
|  | @ -4,8 +4,8 @@ title: Python | |||
| 
 | ||||
| These language-specific pages are available: | ||||
| 
 | ||||
| - [Quick start](quickstart) | ||||
| - [Basics tutorial](basics) | ||||
| - [Generated-code reference](generated-code) | ||||
| - [Quick start](quickstart/) | ||||
| - [Basics tutorial](basics/) | ||||
| - [Generated-code reference](generated-code/) | ||||
| - [API reference](api) | ||||
| - [Daily builds](daily-builds) | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| --- | ||||
| title: Basics Tutorial | ||||
| title: Basics tutorial | ||||
| description: A basic tutorial introduction to gRPC in Python. | ||||
| weight: 50 | ||||
| --- | ||||
|  | @ -13,7 +13,7 @@ By walking through this example you'll learn how to: | |||
| - Generate server and client code using the protocol buffer compiler. | ||||
| - Use the Python gRPC API to write a simple client and server for your service. | ||||
| 
 | ||||
| It assumes that you have read the [Introduction to gRPC](/docs/what-is-grpc/introduction) and are familiar | ||||
| It assumes that you have read the [Introduction to gRPC](/docs/what-is-grpc/introduction/) and are familiar | ||||
| with [protocol | ||||
| buffers](https://developers.google.com/protocol-buffers/docs/overview). You can | ||||
| find out more in the [proto3 language | ||||
|  | @ -44,11 +44,11 @@ $ cd grpc/examples/python/route_guide | |||
| 
 | ||||
| You also should have the relevant tools installed to generate the server and | ||||
| client interface code - if you don't already, follow the setup instructions in | ||||
| [the Python quick start guide](/docs/quickstart/python). | ||||
| [Quick start](../quickstart/). | ||||
| 
 | ||||
| ### Defining the service | ||||
| 
 | ||||
| Your first step (as you'll know from the [Introduction to gRPC](/docs/what-is-grpc/introduction)) is to | ||||
| Your first step (as you'll know from the [Introduction to gRPC](/docs/what-is-grpc/introduction/)) is to | ||||
| define the gRPC *service* and the method *request* and *response* types using | ||||
| [protocol | ||||
| buffers](https://developers.google.com/protocol-buffers/docs/overview). You can | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| --- | ||||
| title: Python Generated-code Reference | ||||
| short: Generated Code | ||||
| title: Python Generated-code reference | ||||
| short: Generated code | ||||
| weight: 80 | ||||
| spelling: cSpell:ignore docstrings | ||||
| --- | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| --- | ||||
| title: Quick Start | ||||
| title: Quick start | ||||
| description: This guide gets you started with gRPC in Python with a simple working example. | ||||
| weight: 10 | ||||
| --- | ||||
|  | @ -104,7 +104,7 @@ Congratulations! You've just run a client-server application with gRPC. | |||
| Now let's look at how to update the application with an extra method on the | ||||
| server for the client to call. Our gRPC service is defined using protocol | ||||
| buffers; you can find out lots more about how to define a service in a `.proto` | ||||
| file in [Introduction to gRPC](/docs/what-is-grpc/introduction) and [gRPC Basics: Python](/docs/tutorials/basic/python/). For now all you need | ||||
| file in [Introduction to gRPC](/docs/what-is-grpc/introduction/) and [Basics tutorial](../basics/). For now all you need | ||||
| to know is that both the server and the client "stub" have a `SayHello` RPC | ||||
| method that takes a `HelloRequest` parameter from the client and returns a | ||||
| `HelloReply` from the server, and that this method is defined like this: | ||||
|  | @ -222,7 +222,7 @@ Just like we did before, from the `examples/python/helloworld` directory: | |||
| 
 | ||||
| ### What's next | ||||
| 
 | ||||
| - Learn how gRPC works in [Introduction to gRPC](/docs/what-is-grpc/introduction) | ||||
|   and [Core concepts](/docs/what-is-grpc/core-concepts). | ||||
| - Work through the [Basics Tutorial](../basics). | ||||
| - Learn how gRPC works in [Introduction to gRPC](/docs/what-is-grpc/introduction/) | ||||
|   and [Core concepts](/docs/what-is-grpc/core-concepts/). | ||||
| - Work through the [Basics tutorial](../basics/). | ||||
| - Explore the [API reference](../api). | ||||
|  |  | |||
|  | @ -5,7 +5,7 @@ api_path: https://rubydoc.info/gems/grpc | |||
| 
 | ||||
| These language-specific pages are available: | ||||
| 
 | ||||
| - [Quick start](quickstart) | ||||
| - [Basics tutorial](basics) | ||||
| - [Quick start](quickstart/) | ||||
| - [Basics tutorial](basics/) | ||||
| - [API reference](api) | ||||
| - [Daily builds](daily-builds) | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| --- | ||||
| title: Basics Tutorial | ||||
| title: Basics tutorial | ||||
| description: A basic tutorial introduction to gRPC in Ruby. | ||||
| weight: 50 | ||||
| --- | ||||
|  | @ -12,7 +12,7 @@ By walking through this example you'll learn how to: | |||
| - Generate server and client code using the protocol buffer compiler. | ||||
| - Use the Ruby gRPC API to write a simple client and server for your service. | ||||
| 
 | ||||
| It assumes that you have read the [Introduction to gRPC](/docs/what-is-grpc/introduction) and are familiar | ||||
| It assumes that you have read the [Introduction to gRPC](/docs/what-is-grpc/introduction/) and are familiar | ||||
| with [protocol | ||||
| buffers](https://developers.google.com/protocol-buffers/docs/overview). Note | ||||
| that the example in this tutorial uses the proto3 version of the protocol | ||||
|  | @ -44,11 +44,11 @@ $ cd examples/ruby/route_guide | |||
| 
 | ||||
| You also should have the relevant tools installed to generate the server and | ||||
| client interface code - if you don't already, follow the setup instructions in | ||||
| [the Ruby quick start guide](/docs/quickstart/ruby/). | ||||
| [Quick start](../quickstart/). | ||||
| 
 | ||||
| ### Defining the service | ||||
| 
 | ||||
| Our first step (as you'll know from the [Introduction to gRPC](/docs/what-is-grpc/introduction)) is to | ||||
| Our first step (as you'll know from the [Introduction to gRPC](/docs/what-is-grpc/introduction/)) is to | ||||
| define the gRPC *service* and the method *request* and *response* types using | ||||
| [protocol | ||||
| buffers](https://developers.google.com/protocol-buffers/docs/overview). You can | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| --- | ||||
| title: Quick Start | ||||
| title: Quick start | ||||
| description: This guide gets you started with gRPC in Ruby with a simple working example. | ||||
| weight: 10 | ||||
| --- | ||||
|  | @ -69,7 +69,7 @@ Congratulations! You've just run a client-server application with gRPC. | |||
| Now let's look at how to update the application with an extra method on the | ||||
| server for the client to call. Our gRPC service is defined using protocol | ||||
| buffers; you can find out lots more about how to define a service in a `.proto` | ||||
| file in [gRPC Basics: Ruby](/docs/tutorials/basic/ruby/). For now all you need | ||||
| file in [Basics tutorial](../basics/). For now all you need | ||||
| to know is that both the server and the client "stub" have a `SayHello` RPC | ||||
| method that takes a `HelloRequest` parameter from the client and returns a | ||||
| `HelloResponse` from the server, and that this method is defined like this: | ||||
|  | @ -181,7 +181,7 @@ Just like we did before, from the `examples/ruby` directory: | |||
| 
 | ||||
| ### What's next | ||||
| 
 | ||||
| - Learn how gRPC works in [Introduction to gRPC](/docs/what-is-grpc/introduction) | ||||
|   and [Core concepts](/docs/what-is-grpc/core-concepts). | ||||
| - Work through the [Basics Tutorial](../basics). | ||||
| - Learn how gRPC works in [Introduction to gRPC](/docs/what-is-grpc/introduction/) | ||||
|   and [Core concepts](/docs/what-is-grpc/core-concepts/). | ||||
| - Work through the [Basics tutorial](../basics/). | ||||
| - Explore the [API reference](../api). | ||||
|  |  | |||
|  | @ -4,5 +4,5 @@ title: Web | |||
| 
 | ||||
| These language-specific pages are available: | ||||
| 
 | ||||
| - [Quick start](quickstart) | ||||
| - [Basics tutorial](basics) | ||||
| - [Quick start](quickstart/) | ||||
| - [Basics tutorial](basics/) | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| --- | ||||
| title: Basics Tutorial | ||||
| title: Basics tutorial | ||||
| description: A basic tutorial introduction to gRPC-web. | ||||
| weight: 50 | ||||
| --- | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| --- | ||||
| title: Quick Start | ||||
| title: Quick start | ||||
| description: This guide gets you started with gRPC-Web with a simple working example. | ||||
| weight: 10 | ||||
| --- | ||||
|  | @ -89,8 +89,7 @@ This example app has three key components: | |||
| 
 | ||||
| ### What's next | ||||
| 
 | ||||
| - Work through a more detailed tutorial in [gRPC Basics: | ||||
|   Web](/docs/tutorials/basic/web/). | ||||
| - Work through the [Basics tutorial](../basics/). | ||||
| 
 | ||||
| [grpc-web]: https://github.com/grpc/grpc-web | ||||
| [download]: https://github.com/grpc/grpc-web/archive/master.zip | ||||
| [grpc-web]: https://github.com/grpc/grpc-web | ||||
|  |  | |||
|  | @ -1,8 +1,8 @@ | |||
| --- | ||||
| title: Quick Start | ||||
| title: Quick start | ||||
| description: Get started with gRPC. | ||||
| --- | ||||
| 
 | ||||
| There is a Quick Start for each gRPC supported language with accompanying sample | ||||
| There is a quick start for each gRPC supported language with accompanying sample | ||||
| code for a simple "Hello World" example for you to explore and update. Select a | ||||
| [language](/docs/languages) to get started. | ||||
| [language](/docs/languages/) to get started. | ||||
|  |  | |||
|  | @ -5,5 +5,5 @@ weight: 1 | |||
| 
 | ||||
| New to gRPC? Start with the following pages: | ||||
| 
 | ||||
| - [Introduction to gRPC](introduction) | ||||
| - [Core concepts, architecture and lifecycle](core-concepts) | ||||
| - [Introduction to gRPC](introduction/) | ||||
| - [Core concepts, architecture and lifecycle](core-concepts/) | ||||
|  |  | |||
|  | @ -6,8 +6,8 @@ description: >- | |||
|   and RPC life cycle. | ||||
| --- | ||||
| 
 | ||||
| Not familiar with gRPC? First read [Introduction to gRPC](../introduction). For | ||||
| language-specific details, see the Quick Start, tutorial, and reference | ||||
| Not familiar with gRPC? First read [Introduction to gRPC](../introduction/). For | ||||
| language-specific details, see the quick start, tutorial, and reference | ||||
| documentation for your language of choice. | ||||
| 
 | ||||
| ### Overview | ||||
|  | @ -195,7 +195,7 @@ terminates the RPC immediately so that no further work is done. | |||
| #### Metadata | ||||
| 
 | ||||
| Metadata is information about a particular RPC call (such as [authentication | ||||
| details](/docs/guides/auth)) in the form of a list of key-value pairs, where the | ||||
| details](/docs/guides/auth/)) in the form of a list of key-value pairs, where the | ||||
| keys are strings and the values are typically strings, but can be binary data. | ||||
| Metadata is opaque to gRPC itself - it lets the client provide information | ||||
| associated with the call to the server and vice versa. | ||||
|  | @ -206,7 +206,7 @@ Access to metadata is language dependent. | |||
| 
 | ||||
| A gRPC channel provides a connection to a gRPC server on a specified host and | ||||
| port. It is used when creating a client stub. Clients can specify channel | ||||
| arguments to modify gRPC's default behaviour, such as switching message | ||||
| arguments to modify gRPC's default behavior, such as switching message | ||||
| compression on or off. A channel has state, including `connected` and `idle`. | ||||
| 
 | ||||
| How gRPC deals with closing a channel is language dependent. Some languages also | ||||
|  |  | |||
|  | @ -3,13 +3,14 @@ title: Introduction to gRPC | |||
| short: Introduction | ||||
| description: An introduction to gRPC and protocol buffers. | ||||
| weight: 10 | ||||
| spelling: cSpell:ignore ponycopter | ||||
| --- | ||||
| 
 | ||||
| This page introduces you to gRPC and protocol buffers. gRPC can use | ||||
| protocol buffers as both its Interface Definition Language (**IDL**) and as its underlying message | ||||
| interchange format. If you’re new to gRPC and/or protocol buffers, read this! | ||||
| If you just want to dive in and see gRPC in action first, | ||||
| see our [Quick Starts](/docs/quickstart). | ||||
| [select a language](/docs/languages/) and try its **Quick start**. | ||||
| 
 | ||||
| ## Overview | ||||
| 
 | ||||
|  | @ -24,7 +25,12 @@ languages) that provides the same methods as the server. | |||
| 
 | ||||
|  | ||||
| 
 | ||||
| gRPC clients and servers can run and talk to each other in a variety of environments - from servers inside Google to your own desktop - and can be written in any of gRPC's supported languages. So, for example, you can easily create a gRPC server in Java with clients in Go, Python, or Ruby. In addition, the latest Google APIs will have gRPC versions of their interfaces, letting you easily build Google functionality into your applications. | ||||
| gRPC clients and servers can run and talk to each other in a variety of | ||||
| environments - from servers inside Google to your own desktop - and can be | ||||
| written in any of gRPC's supported languages. So, for example, you can easily | ||||
| create a gRPC server in Java with clients in Go, Python, or Ruby. In addition, | ||||
| the latest Google APIs will have gRPC versions of their interfaces, letting you | ||||
| easily build Google functionality into your applications. | ||||
| 
 | ||||
| ### Working with Protocol Buffers | ||||
| 
 | ||||
|  |  | |||
|  | @ -8,7 +8,7 @@ Here are some frequently asked questions. Hope you find your answer here :-) | |||
| 
 | ||||
| gRPC is a modern, open source remote procedure call (RPC) framework that can run anywhere. It enables client and server applications to communicate transparently, and makes it easier to build connected systems. | ||||
| 
 | ||||
| Read the longer [Motivation & Design Principles](/blog/principles) post for background on why we created gRPC. | ||||
| Read the longer [Motivation & Design Principles](/blog/principles/) post for background on why we created gRPC. | ||||
| 
 | ||||
| ### What does gRPC stand for? | ||||
| 
 | ||||
|  | @ -33,11 +33,11 @@ Google has been using a lot of the underlying technologies and concepts in gRPC | |||
| 
 | ||||
| See [Officially supported languages and platforms][]. | ||||
| 
 | ||||
| [Officially supported languages and platforms]: /about#officially-supported-languages-and-platforms | ||||
| [Officially supported languages and platforms]: /about/#officially-supported-languages-and-platforms | ||||
| 
 | ||||
| ### How do I get started using gRPC? | ||||
| 
 | ||||
| You can start with installation of gRPC by following instructions [here](/docs/quickstart). Or head over to the [gRPC GitHub org page](https://github.com/grpc), pick the runtime or language you are interested in, and follow the README instructions. | ||||
| You can start with installation of gRPC by following instructions [here](/docs/quickstart/). Or head over to the [gRPC GitHub org page](https://github.com/grpc), pick the runtime or language you are interested in, and follow the README instructions. | ||||
| 
 | ||||
| ### Which license is gRPC under? | ||||
| 
 | ||||
|  | @ -49,9 +49,9 @@ All implementations are licensed under [Apache 2.0](https://github.com/grpc/grpc | |||
| 
 | ||||
| ### Where is the documentation? | ||||
| 
 | ||||
| Check out the [documentation](/docs) right here on grpc.io. | ||||
| Check out the [documentation](/docs/) right here on grpc.io. | ||||
| 
 | ||||
| ### What is the roadmap? | ||||
| ### What is the road map? | ||||
| 
 | ||||
| The gRPC project has an RFC process, through which new features are designed and approved for implementation. They are tracked in [this repository](https://github.com/grpc/proposal). | ||||
| 
 | ||||
|  |  | |||
|  | @ -15,7 +15,7 @@ | |||
|     {{ end }} | ||||
|   </ul> | ||||
| 
 | ||||
|   <a class="is-size-4" href="/blog"> | ||||
|   <a class="is-size-4" href="/blog/"> | ||||
|     More... | ||||
|   </a> | ||||
| </div> | ||||
|  | @ -8,7 +8,7 @@ | |||
|       </p> | ||||
| 
 | ||||
|       <div class="buttons are-medium is-centered"> | ||||
|         <a class="button is-primary has-text-weight-bold" href="/docs/what-is-grpc/introduction"> | ||||
|         <a class="button is-primary has-text-weight-bold" href="/docs/what-is-grpc/introduction/"> | ||||
|           Learn more | ||||
|         </a> | ||||
|       </div> | ||||
|  | @ -17,22 +17,22 @@ | |||
| 
 | ||||
|       <p class="title is-size-3 is-size-4-mobile">Get started!</p> | ||||
|       <div class="buttons are-medium is-centered"> | ||||
|         <a class="button is-primary" href="/docs/languages/go/quickstart"> | ||||
|         <a class="button is-primary" href="/docs/languages/go/quickstart/"> | ||||
|           Go | ||||
|         </a> | ||||
|         <a class="button is-primary" href="/docs/languages/cpp/quickstart"> | ||||
|         <a class="button is-primary" href="/docs/languages/cpp/quickstart/"> | ||||
|           C++ | ||||
|         </a> | ||||
|         <a class="button is-primary" href="/docs/languages/java/quickstart"> | ||||
|         <a class="button is-primary" href="/docs/languages/java/quickstart/"> | ||||
|           Java | ||||
|         </a> | ||||
|         <a class="button is-primary" href="/docs/languages/python/quickstart"> | ||||
|         <a class="button is-primary" href="/docs/languages/python/quickstart/"> | ||||
|           Python | ||||
|         </a> | ||||
|         <a class="button is-primary" href="/docs/languages/csharp/quickstart"> | ||||
|         <a class="button is-primary" href="/docs/languages/csharp/quickstart/"> | ||||
|           C# | ||||
|         </a> | ||||
|         <a class="button is-primary" href="/docs/languages"> | ||||
|         <a class="button is-primary" href="/docs/languages/"> | ||||
|           <i class="fas fa-ellipsis-h"></i> | ||||
|         </a> | ||||
|       </div> | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue