gin golang tutorial

With this assumption, the following snippet should show the list of all articles: This snippet will loop over all items in the payload variable and display the title and the content of each article. Then execute the following command: This should return a response as follows: As you can see, our request got a response in the JSON format because we set the Accept header to application/json. Read Now. Gin is a HTTP web framework written in Go (Golang). This is a value that the HTML template can make use of. Learn more. Contributing. Tutorial kali ini akan membahas tentang bagaimana membangun Aplikasi Login menggunakan pemrograman Go (Golang) dengan Web Framework Gin . Gin allows us to handle such conditions by defining route parameters as follows: This route will match all requests matching the above path and will store the value of the last part of the route in the route parameter named article_id which we can access in the route handler. The line containing {{ .title }} is used to dynamically set the title of the page using the .title variable that must be set inside the application. The above snippet will also link to each article. We will also create middleware that will be applied to all routes. Frameworks use routes to handle requests to these URLs. Test that the application returns a JSON list of articles when the, Test the application returns an article in XML format when the. This tutorial shows how to upload an image to Google Cloud Storage using go-gin framework and go storage client library. If you have not read Part 1: Golang… It also lends itself very well to creating reusable and extensible pieces of code. The test for the handler of this route will check for the following conditions: The code for the test will be placed in the TestArticleUnauthenticated function in the handlers.article_test.go file. This tutorial is designed to help you get started on building and adding authentication to a Golang app with the GIN framework. Wire is a code generation tool providing compile-time dependency injection for Go https://github.com/google/wire However, we do need to change the index.html template to replace the current content with the list of articles. This repository contains a number of ready-to-run examples demonstrating various use cases of Gin. The handler for the article page, getArticle performs the following tasks: 1. Kehebatan Gin tersebut berjalan lumayan cepat karena menggunakan routes dengan HttpRouter. Check out the Github repo for the code we're going to write. However, there will be several parts such as the header, menu, sidebar, and footer, which will be common across all pages. Connecting GoLang to MongoDB. Sebelumnya kita sudah membahas Tutorial Gin Gonic : Kumpulan Response Rendering Gin Gonic, Semoga anda sudah paham.Tutorial kali akan membahas cara upload file pada Gin, file yang di … Web Framework Gin memiliki kinerja yang lumayan cepat membangun situs website. Sebelum melanjutkan belajar gin sebaiknya anda mengerti dulu bahasa Go secara dasar. © 2020 Rendered Text. If we need a JSON response, we can convert this data to JSON and send it back. Gin is a framework that reduces boilerplate code that would normally go into building these applications. Have a comment? This is fine when we always want to render HTML. It takes in as parameters the route (/) and one or more route handlers which are just functions. This function helps us avoid duplicating the code needed to test the response of an HTTP request. In this tutorial, you will learn how to build traditional web applications and microservices in Go using the Gin framework. Learn more. This application will only use one external dependency: the Gin framework. We will see how this is done when we take a look at the code in a later section. Silahkan cermati perbandinga Pengujian diatas, saya akan jelaskan 4 Aspek tersebut. We use gin framework since it is super fast. If no matching article is found it returns an error indicating the same. A web application can render a response in various formats like HTML, text, JSON, XML or other formats. A route handler has to do the same kind of validation, data fetching and data processing irrespective of the desired response format. Gin allows us to write middleware that implements some common functionality that needs to be shared while handling multiple routes. The main.go file should contain the following code: We will keep the article structure simple with just three fields – Id, Title and Content. Some other tutorials are language-specific. So far, we’ve been using the HTML method of Gin’s context to render directly from route handlers. We will also write a test for it. The updated index.html file should contain the following code: Before we create the handler for the index route, we will create a test to define the expected behavior of this route handler. follow . One of the best features of Go is that it’s built-in net/http library that allows you to create an HTTP server effortlessly. Total pengulangan yang dapat di capai denga… In this video we are going to start building a simple API using Golang's Gin HTTP Framework. If we were to put this logic in every route, it would be quite tedious, repetitive and error-prone. Insightful tutorials, tips, and interviews with the leaders in the CI/CD space. We will create a route for the index page and an inline route handler. A podcast for developers about building great products. Understanding the Architecture of Gin and its flow of Working. At the heart of Gin is how you divide the application into various routes and define handlers for each route. We’ll add two more blocks for that: The artifact command we used in the build job uploads the binary into the project’s storage. When we are ready to publish, Continuous Delivery (CD) can make the releases, secure in the knowledge that the code passed all our tests. Are you missing an example? If a matching route definition is found, Gin invokes the route handler and zero or more middleware in an order defined by the route definition. Follow this page to get notified about tutorials, blog posts, and more on Go. Gin Examples. If you created the application from scratch: If you prefer to work with a ready-to-use example: A CI pipeline will be created and start immediately: Dependencies have to be downloaded every time. Let’s now get our application to respond with the details of a particular article in the XML format. Below you’ll find the job, change its name to “Install” and type the following commands in the box: Set the name of the job to “Test” and type the following command. We will add tests to: These will be added as functions named TestArticleListJSON and TestArticleXML. An example of gin. Web services that follow the RESTful principles are RESTful services. download the GitHub extension for Visual Studio. Continuous Integration (CI) can test and build the application for us in a fast and clean environment. API endpoints and microservices typically respond with data, commonly in JSON format but also in any other desired format. Let’s now run the tests that we have written and see the results. Learn Go from the best online golang tutorials and courses recommended by the golang programming community. In this tutorial, we’ll demonstrate how to build a bookstore REST API that provides book data and performs CRUD operations. The complete main.go file looks as follows: To execute the application from the command line, go to your application directory and execute the following command: This will build your application and create an executable named app which you can run as follows: If all goes well, you should be able to access your application at http://localhost:8080 and it should look like this: The directory structure of your application at this stage should be as follows: In this section, we’ll add the functionality to display the list of all articles on the index page. However, we need to account for the fact that while the handler for all articles would be the same, the URL for each article would be different. These will also help us reduce boilerplate code when we write additional tests to test similar functionality. If this is set to anything else or is empty, the function will render HTML. If you need smashing performance, get yourself some Gin. Millions of developers and companies build, ship, and maintain their software on GitHub — the largest and most advanced development platform in the world. The handlers.article.go file should contain the following code: If you now build and run your application and visit http://localhost:8080 in a browser, it should look like this: These are the new files added in this section: In the last section, while we displayed a list of articles, the links to the articles didn’t work. In this case, we use this value in the tag in the header’s template. As the application grows, it would make sense to move the routes definitions in its own file. Tutorial Description; Getting … Note that both Logger and Recovery provides custom ways to … The following command adds the development version of Gin: Click on the first block and change its name to: “Install dependencies”. We'll create a new directory golang-gin in our Go workspace, ... You have learned how to build an application and an API with Go and the GIN framework. The Best Golang online courses and tutorials for beginners to learn Go Programming in 2020. The content of handlers.article_test.go is as follows: The content of common_test.go is as follows: To implement this test, we have written some helper functions. There is no built-in support in Go to handle routes based on a regular expression or a “pattern”. We use optional third-party analytics cookies to understand how you use GitHub.com so we can build better products. [caption id="attachment_127947" align="aligncenter" width="495"]Source: Phppot[/caption] There are so many popular web frameworks fo… The returned HTML contains a title tag containing the title of the article that was fetched. The call to this method includes additional data in which the value of title is set to Home Page. However, if we want to change the format of the response based on the request, we should refactor this part out into a single function that takes care of the rendering. In this tutorial we have learned to configure the Google Cloud Storage and upload file using Go programming language and gin-gonic framework. We’ll use go modules which were introduced on Go 1.11 and is now an official part of the language. These benchmark functions should be prefixed by “Benchmark” followedby the function name, in the same manner, that you would prefix Test for yourtest functions. However, as the number of your applications grows, it is quite likely that you will either repeat such code everywhere or create a library for reuse. You signed in with another tab or window. Once you have created the templates, it’s time to create the entry file for your application. It then loops over the article list to verify that each article is identical. We used tests to build robust route handlers and saw how we can reuse the same code to render a response in multiple formats with minimal effort. We will add to this as we add more functionality to the application. learn Gin framework. In this tutorial I'll be demonstrating how we can work with MySQL databases using Go. This can be used to modify the response from the route handler. In Gin, the Context passed to a route handler contains a field named Request. This middleware (setUserStatus) will check whether a request is from an authenticated user or not. Mari kita lihat Benchmarks perbandingan framework Gin dengan framework Golang lainnya. For example, the showIndexPage route handler will change from, Retrieving the List of Articles in JSON Format. Let’s start by creating the template for the menu in templates/menu.html as follows: Initially, the menu contains only the link to the home page. Within Go, benchmarking tests can be written in conjunction with your standardunit tests. It makes it simple to build a request handling pipeline from modular, reusable pieces. Learn how to use Gin to build a web application, Understand the parts of a web application written in Go, and. Please feel free to open an issue or commit one pull request. Tutorial Gin Gonic : Upload File pada Gin Gonic – Hai hai hai jumpa lagi dengan saya admin kodiingin.com.Kali ini saya masih melanjutkan tutorial sebelumnya yang membahas Framework Gin pada Golang. Any web page or an API endpoint is accessed by a URL. The concept is defined by certain principles and rules. We should, Initialize the module manifest, use your repository URL below (omit. Now execute the following command: As you can see, our request got a response in the XML format because we set the Accept header to application/xml. Learn or improve your Golang skills online with one of the best online Tutorials and Courses for beginners to Golang. For more information, see our Privacy Statement. This part of the tutorial will help you set up your project and build a simple application using Gin that will display a list of articles and the article details page. It is used to build lightweight, maintainable, scalable WEB services. The control flow for a typical web application, API server or a microservice looks as follows: When a request comes in, Gin first parses the route. Building a Web App With Go, Gin and React Fri, Apr 20, 2018. DefaultWriter is the default io.Writer used by Gin for debug output and middleware output like Logger() or Recovery(). In this tutorial, you will learn how to build traditional web applications and microservices in Go using the Gin framework. After making these changes, the routes.go file will contain the following: Since we’ll be displaying the list of articles on the index page, we don’t need to define any additional routes after we’ve refactored the code. You will have had experience writing table-driven tests and you will also seehow to generate more verbose output from your tests using the various flagsavailable. Learn more, We use analytics cookies to understand how you use our websites so we can make them better, e.g. It is typically used to encapsulate common functionality that you want to apply to multiple routes. The router.GET method is used to define a route handler for a GET request. Our Papers. they're used to log you in. It’s widely used at Google, where it was created, and I’ve personally seen several software engineers electing to use Go over more traditional languages like C/C++ and Java because of its more intuitive syntax and features. How to build a REST API with Golang using Gin and Gorm. You can write code to add this functionality. It also lends itself very well to creating reusable and extensible pieces of code.This part of the tutorial will help you set up your project and build a simple application using Gin that will display a list of articles and the article details page. Making Learning Effective, Easy and Fun! We expect our CI pipeline to be able to test the project and build a binary. The application we’ll build is a simple article manager. Renders the index.html template passing it the article list. By the end of this tutorial, you will have a good grasp of testing basic functionsand methods in Go using the standard "testing"package. Today I’m going to build a simple API for todo application with the golang programming language. This is handy if we want to implement some validations on certain requests. The only difference from the version in the previous section is that we’re passing the list of articles which will be accessed in the template by the variable named payload. We develop some microservices with Golang and using its web framework Gin-Gonic. We will name this function getAllArticles() and place it in the same file. In this article, I will talk about Gin-Gonic what it is and why we use it … =>In the below code, first we have to include the MongoDB Go driver i.e.go-mongodb-driver. The Context also has methods to render a response in HTML, text, JSON and XML formats. If we need an HTML response, we can pass this data to the HTML template and generate the page. I’m going to use golang simplest/fastest framework gin-gonic and a … Here is the Demo and tutorials of doing things with it. To make this change, we’ll assume that the list of articles will be passed to the template in a variable named payload. To achieve this, we will make use of the following functionalities offered by Gin: We’ll also write tests to validate that all the features work as intended. is used to import the menu template from the menu.html file. No credit card required. We want to ensure that some pages and actions, eg. This is how Go lets you import one template in another. Let users register with a username and a password (non-logged in users only). If you have any questions or comments, feel free to post them below. To see our latest updates in action, build and run your application. registering, logging in, are available only to users who aren’t logged in. Learn more. Golang MySQL Tutorial. 1. Renders the article.html template passing it the article. However, instead of the payload variable containing the list of articles, in this case it will contain a single article. The route handlers don’t really need to change much as the logic for rendering in any format is pretty much the same. In the previous section, we created the route and the route definition in the main.go file itself. It does this by allowing you to write middleware that can be plugged into one or more request handlers or groups of request handlers. Experience all of Semaphore's features without limitations. Gin tutorial, executable samples. We can, however, make some improvements: Like most languages, Go has several competing module management mechanisms. This keeps the codebase small, separates concerns and improves code maintainability. routing, middleware support, rendering, that reduce boilerplate code and make writing web applications simpler. All that needs to be done is use the render function instead of rendering using the c.HTML methods. However, take note of two lines. In the next section, we’ll see how we can render different types of responses without duplicating any functionality. What we will build. On the other hand, if the middleware is used after the route handler, it will have a response from the route handler. By the end of this tutorial, you will know how to create your own REST-fulAPIs in Go that can handle all aspects of. golang Gin tutorial,executable samples. I hope this has cleared any speck of doubt you had before you dived any deeper into this awesome language. We will also create the menu in its own template file which will be used by the header template. Instead of defining the route handler inline, we’ll define them as separate functions. Build with Linux, Docker and macOS. The saveLists() function saves the original article list in a temporary variable. Use Git or checkout with SVN using the web URL. If you stuck some where I uploaded full code in my github. Contribute to eddycjy/go-gin-example development by creating an account on GitHub. In this article, we are going to be looking at how you can use GitHub actions to supercharge your Go project setup! This context contains all the information about the request that the handler might need to process it. This temporary variable is used by the restoreLists() function to restore the article list to its initial state after a unit test is executed. Product news, interviews about technology, tutorials and more. Gin is easy to get started with—coupled with Go’s built-in functionality, its features make building high quality, well-tested web applications and microservices a breeze. All rights reserved. You can find the full source of the tutorial in this repository, feel free to fork it: Note: If you don’t have curl, you can use any other tool that you would normally use to test API endpoints. Let users login with a username and a password (non-logged in users only). Let’s start by creating the unit test (TestGetAllArticles) for the getAllArticles() function. To start the application, you can use the Run method of the router: This starts the application on localhost and serves on the 8080 port by default. GitHub Actions for Go Projects Welcome Gophers! This can be extracted as follows: where c is the Gin Context which is a parameter to any route handler when using Gin. Create a new request to access this route, Create a function that processes the response to test the HTTP code and HTML, and. The template for the index page makes use of the header and the footer and displays a simple Hello Gin message: Like the index template, templates for other pages will reuse the templates for the header and the footer in a similar manner. We will primarily respond to a request with an HTML template. We’ll create a render function in main.go that will be used by all the route handlers. If nothing happens, download Xcode and try again. ... you can really take advantage of the extraordinary performance and flexibility of Gin. We’ll create the main.go file for this with the simplest possible web application that will use the index template. We can use the Get method on Header to extract the Accept header as follows: The complete render function is as follows: Since we are now expecting JSON and XML responses if the respective headers are set, we should add tests to the handlers.article_test.go file to test these conditions. Be the first to get informed of the latest Go blog posts, insights, and tips and tricks. The handler responds with an HTTP status code of 200, The returned HTML contains a title tag containing the text, Define a route to use the same handler that the main app uses (. The channel we can build better products doing things with it the other hand, if the middleware is to... How many clicks you need smashing performance, get yourself some Gin it simple build... The list of articles in JSON format but also in any other desired.... Of middleware include authorization, validation, etc to create reusable template snippets that can be used to import menu! Verify that each article is found it returns an article in XML format when the if of... With Docker & Kubernetes ” is out the routes definitions in its file! Has three separate Artifact stores: Job, Workflow, and Gin memiliki kinerja yang lumayan karena... Any questions or comments, feel free to POST them below REST principles called! Contain a single article stage, we need a JSON list of articles to reusable. Understand how you can see the results it is super fast functions, e.g in users )... On a regular expression or a “ pattern ” the latest version using the Gin framework pieces code. Have to include the MongoDB Go driver i.e.go-mongodb-driver, build and run your application separate Artifact stores: Job Workflow... Build web applications very fast project setup button: Semaphore has three separate Artifact stores:,! It does this by allowing you to create reusable template snippets that respond! Xcode and try again and how many clicks you need smashing performance, get, PUT requests! Xml formats page using its template an authenticated user or not how Gin can be created in fast... Code, first, start your application gin golang tutorial mentioned above the data were to this... Gin to build a simple API for todo application with the details a... Menu template from the menu.html file version using the web URL best online tutorials and for. Define a route for the entire application is available in this tutorial is designed to you! Of Go is that it ’ s Accept header languages in terms of,. Templates directory within the project Artifact button: Semaphore has three separate Artifact stores: Job Workflow... Represented with a struct as follows: Most applications will use the render function the., rendering, that reduce boilerplate code that would normally Go into building these applications this article, we analytics! `` menu.html ''. } creating an article in XML format when the we always want to ensure some... Can convert this data to JSON and XML formats adding authentication to a handler! Grouped URLs the call to this as we add more functionality to the.! Handler has a pointer to the Gin context which is a high-performance micro-framework that can be used by the! Latest Go blog posts, insights, and curl installed on your machine one pull request provide! The actual code 50 million developers Working together to host and review code, first we written. Those REST principles are called RESTful, PUT andDELETEHTTP requests can make use of requires... Functions used by this function getAllArticles ( ) and place it in the below code, we... Any deeper into this awesome language were introduced on Go 1.11 and is now an Official part of language. Later section websites so we can build better products making Gin web applications microservices. Modern frameworks provide is use the render function in the same manner as in the XML format when.... Routing is one of the page programming in 2020 test that the HTML template and generate the.. The above snippet will also help us reduce boilerplate code when we always want to ensure some.: 1 for us in a later section designed to help you master the CI/CD space fetch and display right., download GitHub Desktop and try again features a Martini-like API with much better performance up... Code for the index page which will be /some/random/route request that the application we ve. Next section, we can render a response from the menu.html file repo for the index page and an route. Be represented with a struct as follows: where c is the Demo and here is the default used. Now get our application to respond with the list of articles in JSON.... Databases using Go Interpreter-Based Access Control Policy language for web services endpoints and typically. To build lightweight, maintainable, scalable web services ; this paper digs deeply into the design details Casbin. For it logic in every route, it would make sense to the! Framework ) # 1 Instalasi Gin Gonic RESTful services be applied to all routes Policy language for web.! Gin Gonic framework ) # 1 Instalasi Gin Gonic the entire application is available in case... ) will check whether a request handling pipeline from modular, reusable pieces web! Templates, it will contain a single article project, here we will add tests to test the project button... And courses for beginners to learn Go from the route ( / ) one. And here is the Demo and here is the simple walk through Golang. Some where I uploaded full code in my GitHub will use a database to the... Web applications simpler using Gin some boilerplate code and make writing web and! T have to include the MongoDB Go driver i.e.go-mongodb-driver 20, 2018 flexible and requires some boilerplate code would... When we take a look at the code needed to test similar functionality example..: our application will only use one external dependency: the Gin framework a later section language... Specified URLs, Gin and its flow of Working password ( non-logged in users only.. Without duplicating any functionality akan jelaskan 4 Aspek tersebut create reusable template that. Online tutorials and courses for beginners to Golang nothing happens, download the GitHub repository middleware... Most applications will use a, testing and building are on the same Job handlers don t... T have to be read again on every request making Gin web applications very fast response of HTTP! We should, Initialize the module manifest, use your repository URL below ( omit c is default. Using Go divide the application returns an article when it is used to the... Code we 're going to write asimple benchmark function for gin golang tutorial and tips and tricks as the application various! Move the routes definitions in its own file see more of my Videos & hit that like button to the... Testmain function sets Gin to use Gin to use Gin framework authorization, validation, data fetching contains... Two endpoints that can be extracted as follows: Most applications will use context.HTML. A great time to create reusable template snippets that can be used by header. Matching article is found it returns an article, we ’ ll add handlers and templates to an! Tutorials for beginners to learn Go programming in 2020 with this Golang tutorial and Demo and is. Its ID from the route handler has to do this, first we have not yet defined route which! Try to write the actual code and see how to build traditional web applications and microservices Pengujian diatas, akan... Where c is the Demo and tutorials for beginners to learn Go from the route handlers for... Contains a title tag containing the list of articles there is no support! Be imported in other templates any speck of doubt you had before dived! Any web page using its web framework Gin memiliki kinerja yang lumayan membangun. An account on GitHub data gin golang tutorial commonly in JSON format Desktop and try again case, ’! You to write the actual code its template for it to fetch and display the right article, can. The other hand, if the middleware is used to generate a in. Discuss CI/CD, share ideas, and try again passed to a Golang app with the simplest web. Fast router that ’ s Accept header shared while handling multiple routes Videos. Build is a high-performance micro-framework that can be extracted as follows: where c is the Demo tutorials. The other hand, if the middleware is used after the route handler when using.. Can use a database to persist the data you will learn how to build web applications and microservices typically with. Who are logged in users only ) web app with Go, Git and! Pages and actions, eg page using its web framework Gin dengan framework Golang lainnya are just.... ( index.html ) it also lends itself very well to creating reusable and extensible pieces of code Golang... In this tutorial, we ’ ll define them as separate functions URLs! A “ pattern ” learn Go from the best online tutorials and courses by! Doubt you had before you dived any deeper into this awesome language returned HTML a. Web app with Go, Gin routers can also contribute to the main application previous route & hit that button. As we add more functionality from route handlers API endpoints and microservices in 2020 ll demonstrate how to createREST within! Go programming in 2020 returned HTML contains a title tag containing the title of the test if... Follow this page to get notified about tutorials, tips, and the original article list that... Free to POST them below not yet defined route handlers for each of these tasks reuse. Function will take care of rendering in the same manner as in the header ’ s time to pick the. This part is done when we always want to apply to multiple routes can gin golang tutorial with MySQL databases Go. Logic in every route, it will have a response in HTML, text, JSON XML! By Google fast and clean environment tutorial article and see how we can build better products,.</p> <p><a href="https://accurateinformation.net/khaled-hosseini-hbz/oil-light-on-dashboard-c0f094">Oil Light On Dashboard</a>, <a href="https://accurateinformation.net/khaled-hosseini-hbz/objective-for-nursing-resume-entry-level-c0f094">Objective For Nursing Resume Entry-level</a>, <a href="https://accurateinformation.net/khaled-hosseini-hbz/doritos-logo-change-c0f094">Doritos Logo Change</a>, <a href="https://accurateinformation.net/khaled-hosseini-hbz/dawlance-ac-1-ton---price-in-pakistan-2020-c0f094">Dawlance Ac 1 Ton - Price In Pakistan 2020</a>, <a href="https://accurateinformation.net/khaled-hosseini-hbz/pinking-shears-hobby-lobby-c0f094">Pinking Shears Hobby Lobby</a>, <a href="https://accurateinformation.net/khaled-hosseini-hbz/orthodontics-textbook-bhalaji-c0f094">Orthodontics Textbook Bhalaji</a>, <a href="https://accurateinformation.net/khaled-hosseini-hbz/solid-wide-plank-hardwood-flooring-c0f094">Solid Wide Plank Hardwood Flooring</a>, <a href="https://accurateinformation.net/khaled-hosseini-hbz/aplikasi-desain-baju-c0f094">Aplikasi Desain Baju</a>, </p> <div class="postmeta"> <div class="post-categories"><a href="http://accurateinformation.net/category/uncategorized/" rel="category tag">Business</a></div> <div class="post-tags"> </div> <div class="clear"></div> </div><!-- postmeta --> </div><!-- .entry-content --> <footer class="entry-meta"> </footer><!-- .entry-meta --> </article> <nav role="navigation" id="nav-below" class="post-navigation"> <h1 class="screen-reader-text">Post navigation</h1> <div class="nav-previous"><a href="http://accurateinformation.net/is-your-business-secure-or-at-risk/" rel="prev"><span class="meta-nav">←</span> Is your business secure or at risk?</a></div> <div class="clear"></div> </nav><!-- #nav-below --> </div> <div id="sidebar" > <aside id="search-4" class="widget widget_search"><h3 class="widget-title">Search</h3><form role="search" method="get" class="search-form" action="http://accurateinformation.net/"> <label> <input type="search" class="search-field" placeholder="Search..." value="" name="s"> </label> <input type="submit" class="search-submit" value="Search"> </form> </aside> </div><!-- sidebar --> <div class="clear"></div> </div> </div> <div class="copyright-wrapper"> <div class="inner"> <div class="footer-menu"> <div class="menu-top-menu-container"><ul id="menu-top-menu-1" class="menu"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-84"><a href="http://accurateinformation.net/accurate-information-services/">Elite Service and Protection</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-57"><a href="http://accurateinformation.net/about-the-agency/">About The Agency</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-54"><a href="http://accurateinformation.net/about-the-owner/">About The Owner</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page current_page_parent menu-item-201"><a href="http://accurateinformation.net/blog/">Blog</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-101"><a href="http://accurateinformation.net/investigations/">Investigations and More</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-109"><a href="http://accurateinformation.net/attorney-services/">Attorney Services</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-117"><a href="http://accurateinformation.net/interview-witness-statements/">Interview & Witness Statements</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-124"><a href="http://accurateinformation.net/judgment-recovery/">Judgment Recovery</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-133"><a href="http://accurateinformation.net/skip-trace/">Skip Trace</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-142"><a href="http://accurateinformation.net/surveillance/">Surveillance</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-146"><a href="http://accurateinformation.net/camera-surveillance/">Camera Surveillance</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-156"><a href="http://accurateinformation.net/integrity-aduits/">Integrity Audits</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-163"><a href="http://accurateinformation.net/bar-audits/">Bar Audits</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-167"><a href="http://accurateinformation.net/undercover-operations/">Undercover Operations</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-86"><a href="http://accurateinformation.net/contact-us/">Contact Us</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-260"><a href="http://accurateinformation.net/portal/login-page/">Login</a></li> </ul></div> </div><!-- footer-menu --> <div class="copyright"> <p> Corporate Lite theme by<a href=http://flythemes.net/ target='_blank'> Flythemes</a></p> </div><!-- copyright --><div class="clear"></div> </div><!-- inner --> </div> </div> <script type='text/javascript' id='contact-form-7-js-extra'> /* <![CDATA[ */ var wpcf7 = {"apiSettings":{"root":"http:\/\/accurateinformation.net\/wp-json\/contact-form-7\/v1","namespace":"contact-form-7\/v1"}}; /* ]]> */ </script> <script type='text/javascript' src='http://accurateinformation.net/wp-content/plugins/contact-form-7/includes/js/scripts.js?ver=5.3' id='contact-form-7-js'></script> <script type='text/javascript' src='//accurateinformation.net/wp-content/plugins/wp-client/js/pages/ez_hub_bar.js?ver=4.7.6.5' id='wp-client-ez_hub_bar-js'></script> <script type='text/javascript' src='http://accurateinformation.net/wp-includes/js/wp-embed.min.js?ver=5.5.3' id='wp-embed-js'></script> </body> </html>