Difference between revisions of "Receive JSON POST Data"
Jump to navigation
Jump to search
Michael.mast (talk | contribs) |
Michael.mast (talk | contribs) |
||
Line 5: | Line 5: | ||
#Save the POST data to file (For now, but I feel this will be expanded in the near future) | #Save the POST data to file (For now, but I feel this will be expanded in the near future) | ||
==Process== | ==Process== | ||
+ | ===Apache Config=== | ||
+ | Very simple and clean vhost. | ||
+ | <pre> | ||
+ | <VirtualHost *:80> | ||
+ | DocumentRoot /var/www/html/ | ||
+ | <Directory /var/www/html/> | ||
+ | AuthType Basic | ||
+ | AuthName "Restricted" | ||
+ | AuthBasicProvider file | ||
+ | AuthUserFile "/etc/httpd/password" | ||
+ | Require valid-user | ||
+ | </Directory> | ||
+ | </VirtualHost> | ||
+ | </pre> | ||
+ | Quick and dirty password file | ||
+ | <pre> | ||
+ | htpasswd -bc /etc/httpd/password test test | ||
+ | </pre> | ||
+ | |||
+ | ===PHP Script=== | ||
<ref>https://stackoverflow.com/questions/16931804/recording-a-json-post-to-file-using-php</ref><ref>https://stackoverflow.com/questions/18866571/receive-json-post-with-php</ref>This example will echo the posted data back to the client during testing, as well as save the file to disk. | <ref>https://stackoverflow.com/questions/16931804/recording-a-json-post-to-file-using-php</ref><ref>https://stackoverflow.com/questions/18866571/receive-json-post-with-php</ref>This example will echo the posted data back to the client during testing, as well as save the file to disk. | ||
<pre> | <pre> | ||
Line 23: | Line 43: | ||
?> | ?> | ||
</pre> | </pre> | ||
+ | |||
==Testing== | ==Testing== | ||
Used the following POST method with curl to test with. | Used the following POST method with curl to test with. |
Revision as of 15:59, 26 July 2018
Purpose
Request came across my desk for a web server to receive JSON POST data, providing web hooks for a business analyst to parse. On my end things were simple enough.
- Simple Apache server to receive requests.
- Basic Authentication
- Save the POST data to file (For now, but I feel this will be expanded in the near future)
Process
Apache Config
Very simple and clean vhost.
<VirtualHost *:80> DocumentRoot /var/www/html/ <Directory /var/www/html/> AuthType Basic AuthName "Restricted" AuthBasicProvider file AuthUserFile "/etc/httpd/password" Require valid-user </Directory> </VirtualHost>
Quick and dirty password file
htpasswd -bc /etc/httpd/password test test
PHP Script
[1][2]This example will echo the posted data back to the client during testing, as well as save the file to disk.
<?php $myFile = "testFile.txt"; $data = file_get_contents('php://input'); echo $data; file_put_contents($myFile,$data); ?>
To further build on this, and to keep track of the received hooks, I wanted to add a date/time stamp to the file[3].
<?php $today = date("mdY_His"); $myFile = "testFile_$today.txt"; $data = file_get_contents('php://input'); file_put_contents($myFile,$data); ?>
Testing
Used the following POST method with curl to test with.
curl -X POST -H "Content-Type: application/json" --data '{"test":"1"}' http://localhost
Again, but with a username/password
curl --user test:test -X POST -H "Content-Type: application/json" --data '{"test":"1"}' http://localhost